El lenguaje del índice de texto determina las reglas que se utilizan para analizar las palabras raíz e ignorar las palabras vacías al ejecutar consultas de búsqueda de texto.
Por defecto, si un índice de texto no tiene un lenguaje por defecto, el índice usa el language
campo de documento para determinar el lenguaje que utiliza. Como resultado, los índices de texto no se limitan a un solo lenguaje porque el valor del campo language puede variar entre documentos.
Puede cambiar el campo que el índice utiliza para determinar su lenguaje. Esto es útil si los nombres de tus campos no están en inglés y tus documentos no tienen un campo llamado language.
Para especificar el idioma del índice de texto en un campo distinto a language, incluya la opción language_override cuando cree el índice:
db.<collection>.createIndex( { <field> : "text" }, { language_override: "<field>" } )
El índice de textos utiliza el campo especificado en la opción language_override para determinar el lenguaje que se utilizará para el documento correspondiente.
Para los documentos que no contienen el campo especificado en language_override, el índice utiliza el inglés como su lenguaje.
Antes de comenzar
Crear la colección quotes:
db.quotes.insertMany( [ { _id: 1, idioma: "portuguese", quote: "A sorte protege os audazes" }, { _id: 2, idioma: "spanish", quote: "Nada hay más surrealista que la realidad." }, { _id: 3, idioma: "english", quote: "is this a dagger which I see before me" } ] )
El lenguaje para cada cita se especifica en el campo idioma.
Procedimiento
Crea un índice de texto en el campo quote. Especificar la opción language_override para que el índice de texto utilice el campo idioma para el lenguaje:
db.quotes.createIndex( { quote : "text" }, { language_override: "idioma" } )
Resultados
El índice admite consultas de búsqueda de texto en el campo quote y utiliza reglas de lenguaje basadas en el lenguaje especificado en el campo idioma. Cada documento especifica un valor diferente en el campo idioma, lo que significa que cada documento se busca con reglas de lenguaje diferentes.
Considere los siguientes ejemplos:
Buscar un término válido
La siguiente consulta busca la cadena audazes:
db.quotes.find( { $text: { $search: "audazes" } } )
Salida:
[ { _id: 1, idioma: 'portuguese', quote: 'A sorte protege os audazes' } ]
La query anterior utiliza el portugués como el idioma para cumplir la query.
Buscar una palabra vacía
La siguiente consulta busca la cadena hay:
db.quotes.find( { $text: { $search: "hay" } } )
La consulta anterior no devuelve resultados, aunque la string hay aparezca en el campo quote del documento _id: 2.
El documento _id: 2 especifica el lenguaje español. hay se considera una palabra vacía en español y, por lo tanto, no se incluye en el índice de texto.
Obtén más información
Para ver los idiomas disponibles para los índices de texto, consulta Idiomas de búsqueda de texto en implementaciones autogestionadas.
Para aprender a especificar un lenguaje por defecto para todo un índice de texto, consulta la sección Especificar lenguaje para índices de texto en MongoDB autogestionado.
Para ver las restricciones de los índices de texto, consulta Restricciones de índice de texto en implementaciones autogestionadas.