sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo funciona la búsqueda de texto de MongoDB $?

La búsqueda de texto de MongoDB utiliza la biblioteca de derivación Snowball para reducir las palabras a una forma raíz esperada (o raíz ) sobre la base de normas lingüísticas comunes. La lematización algorítmica proporciona una reducción rápida, pero los idiomas tienen excepciones (como patrones de conjugación de verbos irregulares o contradictorios) que pueden afectar la precisión. La Introducción a la bola de nieve incluye una buena descripción general de algunas de las limitaciones de la derivación algorítmica.

Tu ejemplo de walking tallos para walking y coincide como se esperaba.

Sin embargo, tu ejemplo de trekking proviene de trekk por lo que no coincide con la palabra clave de búsqueda de trek .

Puede confirmar esto explicando su consulta y revisando el parsedTextQuery información que muestra los términos de búsqueda derivados utilizados:

db.events.find({$text: {$search: 'Trekking'} }).explain().queryPlanner.winningPlan.parsedTextQuery
{
​   "terms" : [
​       "trekk"
​   ],
​   "negatedTerms" : [ ],
​   "phrases" : [ ],
​   "negatedPhrases" : [ ]
}

También puede verificar la derivación esperada de Snowball utilizando la demostración de Snowball en línea. o buscando una biblioteca de Snowball para su lenguaje de programación preferido.

Para solucionar las excepciones que comúnmente podrían afectar su caso de uso, podría considerar agregar otro campo a su índice de texto con palabras clave para influir en los resultados de búsqueda. Para este ejemplo, agregaría trek como palabra clave para que el evento descrito como trekking también coincide con sus resultados de búsqueda.

Hay otros enfoques para una inflexión más precisa que generalmente se denominan lematización . Los algoritmos de lematización son más complejos y comienzan a dirigirse al dominio del procesamiento del lenguaje natural . Hay muchos kits de herramientas de código abierto (y comerciales) que puede aprovechar si desea implementar una búsqueda de texto más avanzada en su aplicación, pero están fuera del alcance actual de la función de búsqueda de texto de MongoDB.