Analisador padrão
O analisador standard
é o padrão para todos os índices e queries do Atlas Search. Divide o texto em termos baseados em limites de palavras, o que o torna neutro em idiomas para a maioria dos casos de uso. Converte todos os termos em minúsculas e remove a pontuação. Ela fornece tokenização baseada em gramática que reconhece endereços de e-mail, acrônimos, caracteres chinês-japonês-coreanos, alfanuméricos e muito mais.
Você pode ver os tokens que o analisador standard
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 standard
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 standard
. Se você carregou a coleção no cluster, poderá criar o índice de exemplo usando o Editor Visual da Interface do Usuário do Atlas ou o Editor JSON. Depois de selecionar seu método de configuração preferencial, 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 Mapping 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.standard
no menu suspenso se ainda não estiver selecionado.Analisador de pesquisa
Selecione
lucene.standard
no menu suspenso se ainda não estiver selecionado.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.standard" } } } } Clique em Next.
Clique em Create Search Index.
A query a seguir procura o campo title
em busca do termo action
e limita a saída a dois resultados.
db.movies.aggregate([ { "$search": { "text": { "query": "action", "path": "title" } } }, { "$limit": 2 }, { "$project": { "_id": 0, "title": 1 } } ])
[ { title: 'Action Jackson' }, { title: 'Class Action' } ]
O Atlas Search retornou esses documentos porque fez a correspondência entre o termo de query action
e o token action
para os documentos, que o Atlas Search criou fazendo o seguinte para o texto no campo title
usando o analisador lucene.standard
:
Converta o texto em minúsculas.
Divida o texto com base nos limites das palavras e crie tokens separados.
A tabela seguinte mostra os tokens (termos pesquisáveis) que o Atlas Search cria utilizando o Analisador Padrão e, por outro lado, os tokens que o Atlas Search cria para o Analisador de Palavra-chave e o Analisador de Espaço em Branco para os documentos nos resultados:
Título | Tokens de analisador padrão | Tokens do analisador de palavras-chave | Tokens do analisador de espaço em branco |
---|---|---|---|
|
|
|
|
|
|
|
|
Se você indexar o campo utilizando o:
Analisador de palavras-chave, o Atlas Search não corresponderia aos documentos nos resultados do termo de query
action
porque o analisador dekeyword
corresponde apenas a documentos nos quais o termo de pesquisa corresponde exatamente a todo o conteúdo do campo (Action Jackson
eClass Action
) exatamente.Whitespace Analyzer, o Atlas Search não corresponderia aos documentos nos resultados para o termo de consulta
action
porque o analisadorwhitespace
tokeniza o valor do campotitle
em seu caso original (Action
) e oaction
tem owhitespace
em minúsculas, que não corresponde ao token do analisador .