Como indexar campos para preenchimento automático
Nesta página
Você pode utilizar o tipo do Atlas Search autocomplete
para indexar valores de texto em campos de string para preenchimento automático. Você pode consultar campos indexados como tipo autocomplete
usando o operador de preenchimento automático.
Você também pode utilizar o tipo autocomplete
para indexar:
Campos cujo valor é um array de strings. Para saber mais, consulte Como indexar os elementos de um array.
Campos de string dentro de uma array de documentos indexados como o tipo embeddedDocuments.
Dica
Se você tiver um grande número de documentos e uma variedade de dados para os quais deseja executar queries do Atlas Search usando o operador de preenchimento automático, pode demorar algum tempo para criar esse índice. Alternativamente, você pode criar um índice separado com somente o tipo autocomplete
para reduzir o impacto sobre outros índices e queries enquanto o índice é criado.
Para saber mais, consulte Considerações sobre o desempenho do índice do Atlas Search.
O Atlas Search não indexa dinamicamente campos de índice do tipo autocomplete
. Você deve utilizar mapeamentos estáticos para indexar campos do autocomplete
. Você pode usar o Visual Editor ou o JSON Editor na UI do Atlas para indexar campos do tipo autocomplete
.
Definir o índice para o tipo autocomplete
Para definir o índice para o tipo autocomplete
, escolha seu método de configuração preferido na UI do Atlas e então selecione o banco de dados e collection.
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 o campo a ser indexado no menu suspenso Field Name.
Observação
Você não pode indexar campos que contêm o sinal de dólar (
$
) no início do nome do campo.Para nomes de campo que contenham o termo
email
ouurl
, o Atlas Search Visual Editor recomenda o uso de um analisador personalizado com o tokenizador uaxUrlEmail para indexar endereços de e-mail ou valores de URL. Clique em Create urlEmailAnalyzer para criar e aplicar o analisador personalizado ao Autocomplete Properties do campo.Clique no menu suspenso Data Type e selecione Autocomplete.
(Opcional) Expanda e configure o Token Properties para o campo. Para saber mais, consulte Como configurar as propriedades do campo
token
.Clique em Add.
A seguir está a sintaxe JSON para o tipo autocomplete
. Substitua a definição de índice-padrão pelo seguinte. Para saber mais sobre os campos, consulte Propriedades do campo.
1 { 2 "mappings": { 3 "dynamic": true|false, 4 "fields": { 5 "<field-name>": { 6 "type": "autocomplete", 7 "analyzer": "<lucene-analyzer>", 8 "tokenization": "edgeGram|rightEdgeGram|nGram", 9 "minGrams": <2>, 10 "maxGrams": <15>, 11 "foldDiacritics": true|false 12 } 13 } 14 } 15 }
Configurar propriedades de campo do autocomplete
O tipo autocomplete
do Atlas Search usa os seguintes parâmetros:
Opção | Tipo | necessidade | Descrição | Default | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| string | necessário | Etiqueta legível para humanos que identifica este tipo de campo. O valor deve ser string. | |||||||||||||||||||||||||||||||||||||||||||||||||
| string | opcional | Nome do analyzer para utilizar com este mapeamento com preenchimento automático. Você pode usar qualquer analyzer do Atlas Search, exceto o analyzer de idioma |
| ||||||||||||||||||||||||||||||||||||||||||||||||
| int | opcional | Número máximo de caracteres por sequência indexada. O valor limita o comprimento de caracteres de tokens indexados. Ao pesquisar termos maiores que o valor |
| ||||||||||||||||||||||||||||||||||||||||||||||||
| int | opcional | Número mínimo de caracteres por sequência indexada. Recomendamos |
| ||||||||||||||||||||||||||||||||||||||||||||||||
| enum | opcional | Estratégia de tokenização para indexar o campo para o preenchimento automático. O valor pode ser um dos seguintes:
Quando tokenizado com um valor
Indexar um campo para preenchimento automático com uma estratégia de tokenização de Para a estratégia de tokenização especificada, o Atlas Search aplica o seguinte processo para concatenar tokens sequenciais antes de emiti-los. Esse processo às vezes é chamado de "shingling". O Atlas Search emite tokens entre
|
| ||||||||||||||||||||||||||||||||||||||||||||||||
| booleano | opcional | Sinalizador que indica se você deve incluir ou remover sinais diacríticos do texto indexado. O valor pode ser um dos seguintes:
|
|
Experimente um exemplo para o tipo autocomplete
O exemplo de definição de índice abaixo usa a coleção sample_mflix.movies. Se você já tiver os dados de amostra carregados em seu cluster, poderá usar o Visual Editor ou o Editor JSON na UI do Atlas para configurar o índice. Após selecionar seu método de configuração preferido, selecione o banco de dados e a coleção e filtre seu índice para adicionar mapeamentos de campo.
O exemplo de definição de índice abaixo indexa somente o campo title
como o tipo autocomplete
para oferecer suporte a queries de pesquisa conforme o tipo neste campo usando o operador de preenchimento automático. A definição de índice também especifica o seguinte:
Use o analisador padrão para dividir os valores de texto em termos baseados em limites de palavras.
Use a estratégia de tokenização
edgeGram
para indexar caracteres a partir do lado esquerdo das palavras.Índice de, no mínimo,
3
caracteres por sequência indexada.Índice de, no máximo,
5
caracteres por sequência indexada.Incluir marcas diacríticas no índice e texto de consulta.
Na janela Add Field Mapping, selecione title no menu suspenso Field Name.
Clique no menu suspenso Data Type e selecione Autocomplete.
Faça as seguintes alterações em Autocomplete Properties:
Gramas máx.
Defina o valor como
5
.Gramas mín.
Defina o valor como
3
.Tokenização
Selecione
edgeGram
no menu suspenso.Diacríticos de dobra
Selecione
false
no menu suspenso.Clique em Add.
Substitua a definição de índice padrão pela seguinte definição de índice.
1 { 2 "mappings": { 3 "dynamic": false, 4 "fields": { 5 "title": { 6 "type": "autocomplete", 7 "analyzer": "lucene.standard", 8 "tokenization": "edgeGram", 9 "minGrams": 3, 10 "maxGrams": 5, 11 "foldDiacritics": false 12 } 13 } 14 } 15 }
O exemplo de definição de índice abaixo usa a coleção sample_mflix.movies. Se você já tiver os dados de amostra carregados em seu cluster, poderá usar o Visual Editor ou o Editor JSON na UI do Atlas para configurar o índice. Após selecionar seu método de configuração preferido, selecione o banco de dados e a coleção e filtre seu índice para adicionar mapeamentos de campo.
Você também pode indexar um campo como outros tipos especificando os outros tipos na matriz. Por exemplo, a definição de índice a seguir indexa o campo title
como os seguintes tipos:
autocomplete
para dar suporte ao preenchimento automático para consultas usando o operador de preenchimento automático .string
tipo para dar suporte à pesquisa de texto usando operadores como text, phrase, entre outros.
Na janela Add Field Mapping, selecione title no menu suspenso Field Name.
Clique no menu suspenso Data Type e selecione Autocomplete.
Faça as seguintes alterações em Autocomplete Properties:
Gramas máx.
Defina o valor como
15
.Gramas mín.
Defina o valor como
2
.Tokenização
Selecione
edgeGram
no menu suspenso.Diacríticos de dobra
Selecione
false
no menu suspenso.Clique em Add.
Repita as etapas de b a d.
Clique no menu suspenso Data Type e selecione String.
Aceite as configurações padrão String Properties e clique em Add.
Substitua a definição de índice padrão pela seguinte definição de índice.
1 { 2 "mappings": { 3 "dynamic": true|false, 4 "fields": { 5 "title": [ 6 { 7 "type": "autocomplete", 8 "analyzer": "lucene.standard", 9 "tokenization": "edgeGram", 10 "minGrams": 2, 11 "maxGrams": 15, 12 "foldDiacritics": false 13 }, 14 { 15 "type": "string" 16 } 17 ] 18 } 19 } 20 }
O exemplo de definição de índice a seguir usa a coleção sample_mflix.users. Se tiver os dados de amostra já carregados no seu cluster, você poderá utilizar o Editor Visual ou o Editor JSON na UI do Atlas para configurar o índice. Após selecionar seu método de configuração preferido, selecione o banco de dados e a coleção e refine seu índice para adicionar mapeamentos de campo.
O exemplo de definição de índice abaixo indexa somente o campo email
como o tipo autocomplete
para oferecer suporte a queries de pesquisa conforme o tipo neste campo usando o operador de preenchimento automático. A definição de índice especifica o seguinte:
Use o analisador de palavras-chave para aceitar uma string ou array de strings como parâmetro e indexá-las como um único termo (token).
Use o tokenizador nGram para tokenizar texto em blocos, ou "n-gramas", de quaisquer tamanhos.
Índice de, no mínimo,
3
caracteres por sequência indexada.Índice de, no máximo,
15
caracteres por sequência indexada.Incluir marcas diacríticas no índice e texto de consulta.
Você também pode usar o tokenizador uaxUrlEmail
para tokenizar URLs e endereços de e-mail. Para saber mais, consulte uaxUrlEmail.
Na janela Add Field Mapping, selecione email no menu suspenso Field Name.
Clique no menu suspenso Data Type e selecione Autocomplete.
Faça as seguintes alterações em Autocomplete Properties:
Analisador
Selecione lucene.keyword no menu suspenso.
Gramas máx.
Defina o valor como
15
.Gramas mín.
Defina o valor como
3
.Tokenização
Selecione nGram no menu suspenso.
Diacríticos de dobra
Selecione
false
no menu suspenso.Clique em Add.
Substitua a definição de índice padrão pela seguinte definição de índice.
1 { 2 "mappings": { 3 "dynamic": true, 4 "fields": { 5 "email": { 6 "type": "autocomplete", 7 "analyzer": "lucene.keyword", 8 "tokenization": "nGram", 9 "minGrams": 3, 10 "maxGrams": 15, 11 "foldDiacritics": false 12 } 13 } 14 } 15 }