Este tutorial describe cómo especificar el idioma por defecto asociado con el índice de texto y también cómo crear índices de texto para colecciones que contienen documentos en diferentes idiomas.
Especifique el lenguaje por defecto para un text Index
El lenguaje por defecto asociado a los datos indexados determina las reglas para analizar las raíces de palabras (es decir, de derivación) e ignorar las palabras vacías. El lenguaje por defecto para los datos indexados es english.
Para especificar un diferente lenguaje, utiliza la opción default_language al crear el text índice. Ver Idiomas de búsqueda de texto en implementaciones autogestionadas para los idiomas disponibles default_language para.
El siguiente ejemplo crea para la colección quotes un índice text en el campo content y establece default_language en spanish:
db.quotes.createIndex( { content : "text" }, { default_language: "spanish" } )
Cree un índice text para una colección en varios idiomas
Especifique el Lenguaje del Índice dentro del Documento
Si una colección contiene documentos o documentos incrustados que están en diferentes lenguajes, incluye un campo llamado language en los documentos o documentos incrustados y especifica como su valor el lenguaje para ese documento o documento incrustado.
MongoDB utilizará el idioma especificado para ese documento o documento incrustado al crear el índice text:
El lenguaje especificado en el documento sobrescribe el lenguaje por defecto para el índice
text.El idioma especificado en un documento incrustado anula el idioma especificado en un documento adjunto o el idioma predeterminado para el índice.
Consulte Idiomas de búsqueda de texto en implementaciones autoadministradas para obtener una lista de los idiomas admitidos.
Por ejemplo, una colección quotes contiene documentos multilingües que incluyen el campo language en el documento y/o el documento incrustado según se requiera:
{ _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í." } }
Si crea un índice text en el campo quote con el lenguaje por defecto de inglés.
db.quotes.createIndex( { original: "text", "translation.quote": "text" } )
Luego, para los documentos y documentos incrustados que contienen el campo language, el índice text utiliza ese lenguaje para analizar raíces de palabras y otras características lingüísticas.
Para los documentos incrustados que no contienen el campo language,
Si el documento principal contiene el campo
language, el índice utiliza el lenguaje del documento para el documento incrustado.De lo contrario, el índice utiliza el idioma predeterminado para los documentos incrustados.
Para los documentos que no contienen el campo language, el índice utiliza el idioma predeterminado, que es inglés.
Utiliza cualquier campo para especificar el idioma de un documento
Para usar un campo con un nombre distinto de language, incluye la opción language_override al crear el índice.
Por ejemplo, da la siguiente orden para usar idioma como el nombre del campo en lugar de language:
db.quotes.createIndex( { quote : "text" }, { language_override: "idioma" } )
Los documentos de la colección quotes pueden especificar un idioma con el campo idioma:
{ _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" }