• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

132
Views
Encuentre documentos similares basados en una cadena en MongoDB

Necesito encontrar todos los documentos en una base de datos MongoDB que tengan una propiedad que contenga una cadena que sea similar al término de búsqueda pero que permita un cierto % de divergencia.

En javascript simple, podría, por ejemplo, usar https://www.npmjs.com/package/string-similarity y luego, básicamente, hacer coincidir todos los documentos que tienen una puntuación de similitud> 90%.

Me gustaría hacer esto como una consulta MongoDB y tener el mayor rendimiento posible ya que la base de datos contiene millones de documentos.

¿Qué posibles opciones tengo en esta situación?

  • Encontré algo sobre la búsqueda de $ texto, pero no parece que ayude mucho
  • Estaba pensando en crear algún tipo de firma para cada documento, como algún tipo de hash que permita algún tipo de divergencia.

Estoy muy feliz por cada idea para resolver esto de la mejor manera posible.

about 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

La solución común a este problema es usar una base de datos de un motor de búsqueda, como Elasticsearch o Atlas search (del equipo de Mongodb). No entraré en demasiados detalles sobre cómo funcionan estas bases de datos, pero en términos generales son una base de datos de índice inverso, esto significa que usted tokeniza sus datos al insertarlos y luego sus consultas se ejecutan en los datos tokenizados y no en el conjunto de datos sin procesar.

Este enfoque es muy poderoso y puede ayudar con muchos problemas de "motor de búsqueda", como el autocompletado o, en su caso, lo que se llama una búsqueda "difusa".

Veamos cómo maneja elasticsearch esto leyendo acerca de su característica difusa :

Para encontrar términos similares, la consulta aproximada crea un conjunto de todas las variaciones o expansiones posibles del término de búsqueda dentro de una distancia de edición especificada. A continuación, la consulta devuelve coincidencias exactas para cada expansión.

Básicamente, lo que hacen es crear todas las permutaciones "posibles" de la consulta dentro de los parámetros dados. Personalmente, recomendaría que solo use una de estas bases de datos que brindan esta capacidad OOTB, sin embargo, si desea hacer un "pseudo" motor de búsqueda en Mongo, puede usar este enfoque (con la desventaja de que los índices de Mongo son un árbol, por lo que fuerza un análisis de árbol para estas consultas en lugar de una base de datos diseñada para esto)

about 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error