Este tutorial describe cómo especificar el idioma predeterminado 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 idioma predeterminado para un text Index
El idioma predeterminado asociado a los datos indexados determina las reglas para analizar las raíces de las palabras (es decir, la lematización) e ignorar las palabras vacías. El idioma predeterminado para los datos indexados es english.
Para especificar un idioma diferente, utilice la opción default_language al crear el índice text. Consulte 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" } )
Crear un text índice 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 idiomas, incluya un campo llamado language en los documentos o documentos incrustados y especifique como su valor el idioma de ese documento o documento incrustado.
MongoDB utilizará el idioma especificado para ese documento o documento incrustado al crear el índice text:
El idioma especificado en el documento anula el idioma predeterminado 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 en varios idiomas que incluyen el campo language en el documento y/o en el documento incrustado según sea necesario:
{ _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 idioma predeterminado 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 idioma para analizar las raíces de las 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.
Utilice cualquier campo para especificar el idioma de un documento
Para utilizar un campo con un nombre distinto de language, incluya la opción language_override al crear el índice.
Por ejemplo, dé el siguiente comando para utilizar idioma como nombre de 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" }