Menu Docs
Página inicial do Docs
/ /

Crie um índice de texto em vários idiomas em sistemas autogerenciados

Você pode criar um índice de texto para melhorar o desempenho das queries de pesquisa de texto executadas em uma collection que contém documentos ou documentos incorporados com texto em vários idiomas.

Se uma collection contiver documentos ou documentos incorporados que estejam em vários idiomas diferentes, inclua um campo chamado language e especifique o idioma para esses documentos como o valor do campo . Para ver os idiomas disponíveis para indexação de texto, consulte Idiomas de pesquisa de texto em implementaçõ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>
}
)

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í."
}
}
] )

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.

O índice resultante oferece suporte a queries de pesquisa de texto para os documentos e documentos incorporados que contêm 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.

Voltar

Especificar o idioma padrão para um índice de texto

Nesta página