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.