O idioma de um índice de texto determina as regras usadas para analisar palavras derivadas e ignorar palavras vazias ao executar queries de pesquisa de texto.
Por padrão, se um índice de texto não tiver umidioma padrão, o índice usará o campo de documento language para determinar o idioma que usará. Como resultado, os índices de texto não estão limitados a um único idioma porque o valor do campo language pode mudar entre documentos.
Você pode alterar o campo que o índice usa para determinar seu idioma. Isso é útil se os nomes dos seus campos não estiverem em inglês e seus documentos não tiverem um campo chamado language.
Para especificar o idioma do índice de texto em um campo diferente de language, inclua a opção language_override ao criar o índice:
db.<collection>.createIndex( { <field> : "text" }, { language_override: "<field>" } )
O índice de texto utiliza o campo especificado na opção language_override para determinar o idioma a ser utilizado para o documento correspondente.
Para documentos que não contêm o campo especificado em language_override, o índice utiliza o inglês como seu idioma.
Antes de começar
Crie a coleção quotes:
db.quotes.insertMany( [ { _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" } ] )
O idioma de cada inscrição é especificado no campo idioma .
Procedimento
Crie um índice de texto no campo quote . Especifique a opção language_override para fazer com que o índice de texto use o campo idioma para o idioma:
db.quotes.createIndex( { quote : "text" }, { language_override: "idioma" } )
Resultados
O índice suporta queries de pesquisa de texto no campo quote e utiliza regras de idioma baseadas no idioma especificado no campo idioma . Cada documento especifica um valor diferente no campo idioma , o que significa que cada documento é pesquisado com regras de linguagem diferentes.
Considere os seguintes exemplos:
Atlas Search por um termo válido
A query a seguir pesquisa a string audazes:
db.quotes.find( { $text: { $search: "audazes" } } )
Saída:
[ { _id: 1, idioma: 'portuguese', quote: 'A sorte protege os audazes' } ]
A query anterior usa Português como idioma para preencher a query.
Atlas Search por uma palavra de parada
A query a seguir pesquisa a string hay:
db.quotes.find( { $text: { $search: "hay" } } )
A query anterior não retorna nenhum resultado, embora a string hay apareça no campo quote do documento _id: 2.
O documento _id: 2 especifica o idioma espanhol. hay é considerada uma palavra final em espanhol e, portanto, não está incluída no índice de texto.
Saiba mais
Para ver os idiomas disponíveis para índices de texto, consulte Idiomas de pesquisa de texto em implementações autogerenciadas.
Para aprender como especificar uma linguagem padrão para um índice de texto inteiro, veja Especificar Linguagem para Índices de Texto no MongoDB autogerenciado.
Para ver as restrições de índice de texto, consulte Restrições de índice de texto em implantações autogerenciadas.