Observação
MongoDB Search oferece funcionalidades avançadas de pesquisa de texto completo, incluindo vários analisadores. Recomendamos usar índices de pesquisa MongoDB em vez de índices de texto.
Você pode criar um índice de texto para melhorar o desempenho das query de texto executadas em uma coleção contendo documentos ou documentos incorporados com texto em várias linguagens.
Se uma coleção contiver documentos ou documentos incorporados que estejam em várias linguagens diferentes, inclua um campo chamado language e especifique a linguagem para esses documentos como o valor do campo. Para ver as linguagens disponíveis para indexação de texto, consulte Linguagens de query $text em implantações autogerenciadas.
Sua operação de inserção deve ser semelhante a este exemplo para oferecer suporte à indexação de texto para vários idiomas:
db.<collection>.insertOne( { <field>: <value>, language: <language> } )
Antes de começar
Crie uma coleção quotes que contenha documentos em vários idiomas que incluam o 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í." } } ] )
Procedimento
A seguinte operação cria um índice de texto nos campos original e translation.quote :
db.quotes.createIndex({ original: "text", "translation.quote": "text", "default_language" : "fr" })
Observação
O inglês é o idioma padrão para índices. Se você não especificar o default_language, sua query deverá especificar o idioma com o parâmetro $language. Para obter mais informações, consulte Especificar idioma para índices de texto no MongoDB autogerenciado.
Resultados
O índice resultante suporta $text consultas para os documentos e documentos incorporados contendo os campos original e translation.quote. O índice de texto segue regras diferentes de derivação de sufixo e ignora palavras vazias específicas para cada idioma, com base no valor no campo language.
Por exemplo, a query a french seguir procura a palavra réalité.
db.quotes.find( { $text: { $search: "réalité" } } )
Saída:
[ { _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 documentos incorporados que não contêm o campo language ,
Se o documento de inclusão contiver o campo
language, o índice usará o idioma do documento para os documentos incorporados.Caso contrário, o índice usa o idioma padrão para os documentos incorporados.
Para documentos que não contêm o campo language , o índice utiliza o idioma padrão, que é o inglês.
Saiba mais
Para especificar a Linguagem do Índice de Texto em um campo diferente do
language, consulte Especificar a Linguagem do Índice de Texto em Implantações Autogerenciadas.Para aprender como especificar a linguagem padrão para um índice de texto, veja Especificar Linguagem para Índices de Texto no MongoDB autogerenciado.
Para saber mais sobre outras propriedades do índice de texto, consulte Propriedades do índice de texto em implementações autogerenciadas.