Analisador de palavras-chave
O analisador keyword
aceita uma string ou array de strings como parâmetro e as indexa como um único termo (token). Somente as correspondências exatas no campo são retornadas. Ele deixa todo o texto em suas letras maiúsculas e minúsculas originais.
Dica
Você pode ver os tokens que o analisador keyword
cria para uma string estática integrada na interface de usuário do Atlas Visual Editor quando você usa Refine Your Index. A seção Index
Configurations exibe o índice e os tokens de pesquisa que o analisador keyword
cria se você expandir View text
analysis of your selected index configuration para ajudá-lo a selecionar o analisador a ser usado em seu índice.
Importante
O Atlas Search não indexará campos de string em que os tokens do analisador excedam 32766 bytes de tamanho. Se estiver usando o analisador de palavra-chave, os campos de string que excederem 32766 bytes não serão indexados.
Exemplo
A seguinte definição de índice de exemplo especifica um índice no campo title
na coleção sample_mflix.movies utilizando o analisador keyword
. Se você carregou a coleção no seu cluster, você poderá criar o índice de exemplo utilizando o Atlas UI Visual Editor ou o JSON Editor. Após selecionar o método de configuração de sua preferência, selecione o banco de dados e a coleção.
Clique em Refine Your Index para configurar seu índice.
Na seção Field Mappings, clique em Add Field para abrir a janela Add Field Mapping.
Clique em Customized Configuration.
Selecione
title
no menu suspenso Field Name.Clique no menu suspenso Data Type e selecione String se ainda não estiver selecionado.
Expanda o String Properties e faça as seguintes alterações:
Analisador de índice
Selecione
lucene.keyword
no menu suspenso.Analisador de pesquisa
Selecione
lucene.keyword
no menu suspenso.Opções de índice
Use o
offsets
padrão.Store
Use o
true
padrão.Ignorar acima
Manter a configuração padrão.
Normas
Use o
include
padrão.Clique em Add.
Clique em Save Changes.
Clique em Create Search Index.
Substitua a definição de índice padrão pela seguinte definição de índice.
{ "mappings": { "fields": { "title": { "type": "string", "analyzer": "lucene.keyword" } } } } Clique em Next.
Clique em Create Search Index.
A query abaixo procura a frase Class Action
no campo title
.
db.movies.aggregate([ { "$search": { "text": { "query": "Class Action", "path": "title" } } }, { "$project": { "_id": 0, "title": 1 } } ])
[ { title: 'Class Action' } ]
O Atlas Search devolveu o documento porque correspondeu o termo de query Class
Action
ao único token Class Action
que ele cria para o texto no campo utilizando o analisador lucene.keyword
. Por outro lado, o Atlas Search não retorna quaisquer resultados para a seguinte query:
db.cases.aggregate([ { "$search": { "text": { "query": "action", "path": "title" } } } ])
Muitos documentos na coleção contêm a string action
, mas o analisador keyword
só corresponde aos documentos em que o termo de pesquisa corresponde exatamente a todo o conteúdo do campo. Para a query anterior, o analisador keyword
não retornaria nenhum resultado. No entanto, se indexou o campo utilizando o Analisador Padrão ou o Analisador Simples, o Atlas Search retornaria vários documentos nos resultados, incluindo o documento com o valor do campo de título Class
Action
, pois criaria tokens semelhantes ao seguinte, o que então corresponderia ao termo de query:
Analisador | Tokens de saída | Partidas action | Partidas Class Action |
---|---|---|---|
Tokens do analisador de palavras-chave |
| X | √ |
Tokens de analisador padrão |
| √ | √ |
Tokens de analisador simples |
| √ | √ |