Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Especificar el lenguaje para los índices de texto en MongoDB autogestionado

De forma por defecto, la default_language para los índices de texto es english. Para mejorar el rendimiento de las consultas de búsqueda de texto en otros idiomas distintos al inglés, puedes especificar un idioma predeterminado diferente asociado a tu índice de texto.

El lenguaje por defecto asociado con los datos indexados determina las reglas de afijación de sufijos. El lenguaje por defecto también determina qué palabras vacías específicas de un lenguaje (por ejemplo, the, an, a y and en inglés) no se indexan.

Para especificar un lenguaje diferente, use la opción default_language al crear el índice de texto. Para ver los idiomas disponibles para la indexación de texto, consulte Idiomas para búsqueda de texto en implementaciones autoadministradas. Tu operación debe parecerse a este prototipo:

db.<collection>.createIndex(
{ <field>: "text" },
{ default_language: <language> }
)

Si especificas un valor default_language de none, el índice de texto analiza cada palabra en el campo, incluidas las palabras irrelevantes, e ignora la lematización de sufijos.

Cree una colección quotes que contenga los siguientes documentos con un campo de texto en español:

db.quotes.insertMany( [
{
_id: 1,
quote : "La suerte protege a los audaces."
},
{
_id: 2,
quote: "Nada hay más surrealista que la realidad."
},
{
_id: 3,
quote: "Es este un puñal que veo delante de mí?"
},
{
_id: 4,
quote: "Nunca dejes que la realidad te estropee una buena historia."
}
] )

La siguiente operación crea un índice de texto en el campo quote y establece el default_language en spanish:

db.quotes.createIndex(
{ quote: "text" },
{ default_language: "spanish" }
)

El índice resultante admite consultas de búsqueda de texto en el quote campo con reglas de sufijos para el lenguaje español. Por ejemplo, la siguiente query busca la palabra clave punal en el campo quote:

db.quotes.find(
{
$text: { $search: "punal" }
}
)

Salida:

[
{
_id: 3,
quote: "Es este un puñal que veo delante de mí?"
}
]

Aunque el valor de $search está fijado en punal, la query devolverá el documento que contenga la palabra puñal porque los índices de texto son insensibles a diacríticos.

El índice también ignora las palabras vacías específicas del lenguaje. Por ejemplo, aunque el documento con _id: 2 contiene la palabra hay, la siguiente query no devuelve ningún documento. hay se clasifica como una palabra vacía en español, lo que significa que no se incluye en el índice de texto.

db.quotes.find(
{
$text: { $search: "hay" }
}
)

Volver

Crear un índice de texto comodín

En esta página