Especifique o idioma padrão para um índice de texto em sistemas autogerenciados
Nesta página
Por padrão, o default_language
para índices de texto é english
. Para melhorar o desempenho de queries de pesquisa de texto que não estejam em inglês, você pode especificar um idioma padrão diferente associado ao seu índice de texto.
O idioma padrão associado aos dados indexados determina as regras de lematização de sufixos. O idioma padrão também determina quais palavras de parada específicas do idioma (por exemplo, the
, an
, a
e and
em inglês) não são indexadas.
Para especificar um idioma diferente, utilize a opção default_language
ao criar o índice de texto. Para ver os idiomas disponíveis para indexação de texto, consulte Idiomas de pesquisa de texto em implementações autogerenciadas. Sua operação deve se assemelhar a este protótipo:
db.<collection>.createIndex( { <field>: "text" }, { default_language: <language> } )
Se você especificar um valor de , o none
de texto analisará cada palavra no campo, incluindo palavras vazias, e default_language
a derivação de sufixo.
Antes de começar
Crie uma coleção do quotes
que contenha os seguintes documentos com um campo de texto em espanhol:
db.quotes.insertMany( [ { _id: 1, quote : "La suerte protege a los audaces." }, { _id: 2, quote: "Nada hay más surrealista que la realidad." }, { _id: 3, quote: "Es este un puñal que veo delante de mí?" }, { _id: 4, quote: "Nunca dejes que la realidad te estropee una buena historia." } ] )
Procedimento
A seguinte operação cria um índice de texto no campo quote
e define o default_language
para spanish
:
db.quotes.createIndex( { quote: "text" }, { default_language: "spanish" } )
Resultados
O índice resultante oferece suporte a queries de pesquisa de texto no campo quote
com regras de derivação de sufixo no idioma espanhol. Por exemplo, a seguinte query procura a palavra-chave punal
no campo quote
:
db.quotes.find( { $text: { $search: "punal" } } )
Saída:
[ { _id: 3, quote: "Es este un puñal que veo delante de mí?" } ]
Embora o valor $search
esteja definido como punal
, a consulta retornará o documento que contém a palavra puñal
, pois os índices de texto nãosão sensíveis a diacríticos.
O índice também ignora palavras irrelevantes específicas do idioma. Por exemplo, embora o documento com _id: 2
contenha a palavra hay
, a seguinte consulta não retorna nenhum documento. hay
é classificada como uma palavra final em espanhol, o que significa que não está incluída no índice de texto.
db.quotes.find( { $text: { $search: "hay" } } )
Saiba mais
Para criar um índice de texto para uma collection que contém texto em vários idiomas, consulte Criar um índice de texto para uma collection que contém vários idiomas em sistemas autogerenciados.
Para saber mais sobre outras propriedades do índice de texto, consulte Propriedades do índice de texto em implementações autogerenciadas.