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

Crear un índice de texto multilingüe en implementaciones autogestionadas

Puedes crear un índice de texto para mejorar el rendimiento de las consultas de búsqueda de texto realizadas en una colección que contiene documentos o documentos incrustados con texto en varios idiomas.

Si una colección contiene documentos o documentos incrustados que están en varios idiomas diferentes, incluya un campo llamado language y especifica el lenguaje de esos documentos como el valor del campo. Para ver los idiomas disponibles para la indexación de texto, consulte Idiomas de búsqueda de texto en implementaciones autogestionadas.

Tu operación de inserción debe parecerse a este ejemplo para admitir la indexación de texto para varios idiomas:

db.<collection>.insertOne(
{
<field>: <value>,
language: <language>
}
)

Crea una colección quotes que contenga documentos multilingües que incluyan el campo language:

db.quotes.insertMany( [
{
_id: 1,
language: "portuguese",
original: "A sorte protege os audazes.",
translation:
[
{
language: "english",
quote: "Fortune favors the bold."
},
{
language: "spanish",
quote: "La suerte protege a los audaces."
}
]
},
{
_id: 2,
language: "spanish",
original: "Nada hay más surrealista que la realidad.",
translation:
[
{
language: "english",
quote: "There is nothing more surreal than reality."
},
{
language: "french",
quote: "Il n'y a rien de plus surréaliste que la réalité."
}
]
},
{
_id: 3,
original: "Is this a dagger which I see before me?",
translation:
{
language: "spanish",
quote: "Es este un puñal que veo delante de mí."
}
}
] )

La siguiente operación crea un índice de texto en los campos original y translation.quote:

db.quotes.createIndex({ original: "text", "translation.quote": "text", "default_language" : "fr" })

Nota

Inglés es el lenguaje por defecto para los índices. Si no se especifica el default_lenguaje, la query debe especificar el lenguaje con el parámetro $lenguaje. Para obtener más información, consulta Especificar lenguaje para índices de texto en MongoDB autogestionado.

El índice resultante admite consultas de búsqueda de texto para los documentos y documentos incrustados que contienen los campos original y translation.quote. El índice de texto sigue diferentes reglas de derivación de sufijos e ignora las palabras vacías específicas de cada lenguaje, según el valor en el campo language.

Por ejemplo, la siguiente query busca la palabra french réalité.

db.quotes.find(
{ $text:
{ $search: "réalité" }
}
)

Salida:

[
{
_id: 2,
language: 'spanish',
original: 'Nada hay más surrealista que la realidad.',
translation: [
{
language: 'english',
quote: 'There is nothing more surreal than reality.'
},
{
language: 'french',
quote: "Il n'y a rien de plus surréaliste que la réalité."
}
]
}
]

Para los documentos incrustados que no contienen el campo language,

  • Si el documento que lo contiene tiene el campo language, entonces el índice utiliza el lenguaje del documento para los documentos incrustados.

  • De lo contrario, el índice utiliza el idioma predeterminado para los documentos incrustados.

Para los documentos que no contienen el campo language, el índice emplea el lenguaje por defecto, que es el inglés.

Volver

Especifica el lenguaje por defecto para un índice de texto

En esta página