Menu Docs
Página inicial do Docs
/
MongoDB Atlas
/ / / /

Como indexar campos para preenchimento automático

Nesta página

  • Definir o índice para o tipo autocomplete
  • Configurar propriedades do campo autocomplete
  • Experimente um exemplo para o tipo de autocomplete

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.

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.

  1. Clique em Refine Your Index para configurar seu índice.

  2. Na seção Field Mappings, clique em Add Field para abrir a janela Add Field Mapping.

  3. Clique em Customized Configuration.

  4. 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 ou url, 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.

  5. Clique no menu suspenso Data Type e selecione Autocomplete.

  6. (Opcional) Expanda e configure o Token Properties para o campo. Para saber mais, consulte Como configurar as propriedades do campo token.

  7. 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}

O tipo autocomplete do Atlas Search usa os seguintes parâmetros:

Opção
Tipo
necessidade
Descrição
Default

type

string

necessário

Etiqueta legível para humanos que identifica este tipo de campo. O valor deve ser string.

analyzer

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 lucene.kuromoji e os seguintes tokenizadores e filtros de tokens do analisador customizado:

lucene.standard

maxGrams

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 maxGrams, o Atlas Search trunca os tokens para o comprimento maxGrams.

15

minGrams

int

opcional

Número mínimo de caracteres por sequência indexada. Recomendamos 4 para o valor mínimo. Um valor menor que 4 pode afetar o desempenho porque o tamanho do índice pode ficar muito grande. Recomendamos o valor padrão de 2 apenas para edgeGram.

2

tokenization

enum

opcional

Estratégia de tokenização para indexar o campo para o preenchimento automático. O valor pode ser um dos seguintes:

  • edgeGram - criar tokens indexáveis, chamados de grams, a partir de sequências de caracteres de comprimento variável a partir do lado esquerdo das palavras delimitadas pelo analisador usado com este mapeamento de preenchimento automático.

  • rightEdgeGram - criar tokens indexáveis, chamados de grams, a partir de sequências de caracteres com comprimentos variáveis começando no lado direito das palavras conforme delimitado pelo analyzer usado com este mapeamento com preenchimento automático.

  • nGram - criar tokens indexáveis, chamados de grams, deslizando uma janela de caracteres de comprimento variável sobre uma palavra. O Atlas Search cria mais tokens para nGram do que edgeGram ou rightEdgeGram. Portanto, o nGram consome mais espaço e tempo para indexar o campo. nGram é mais adequado para executar queries de idiomas com palavras compostas e longas ou idiomas que não usam espaços.

edgeGram, rightEdgeGram e nGram são aplicados no nível da letra. Por exemplo, considere a seguinte frase:

The quick brown fox jumps over the lazy dog.

Quando tokenizado com um valor minGrams de 2 e um valor maxGrams de 5, o Atlas Search indexa a seguinte sequência de caracteres baseado no valor tokenization que você escolhe:

th
the
the{SPACE}
the q
qu
qui
quic
uick
...
og
dog
{SPACE}dog
y dog
zy
azy
lazy
{SPACE}lazy
he
the
{SPACE}the
r the
er
ver
over
{SPACE}over
...
th
the
the{SPACE}
the q
he
he{SPACE}
he q
he qu
e{SPACE}
e q
e qu
e qui
{SPACE}q
{SPACE}qu
{SPACE}qui
{SPACE}quic
qu
qui
quic
quick
...

Indexar um campo para preenchimento automático com uma estratégia de tokenização de edgeGram, rightEdgeGram ou nGram é computacionalmente mais caro do que indexar um campo de string. O índice ocupa mais espaço do que um índice com campos de string regulares.

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 minGrams e maxGrams caracteres:

  • Mantém tokens menores que minGrams.

  • Une tokens maiores que minGrams mas menores que maxGrams a tokens subsequentes para criar tokens até o número máximo especificado de caracteres de comprimento.

edgeGram

foldDiacritics

booleano

opcional

Sinalizador que indica se você deve incluir ou remover sinais diacríticos do texto indexado. O valor pode ser um dos seguintes:

  • true - ignora sinais diacríticos no índice e no texto da query. Retorna resultados com e sem sinais diacríticas. Por exemplo, uma pesquisa por cafè retorna resultados com os caracteres cafè e cafe.

  • false - inclua marcas diacríticas no índice e no texto da query. Retorna somente os resultados que correspondem às strings com ou sem diacríticos na query. Por exemplo, uma pesquisa por cafè retorna resultados somente com os caracteres cafè. Uma pesquisa por cafe retorna resultados somente com os caracteres cafe.

true

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.

  1. Na janela Add Field Mapping, selecione title no menu suspenso Field Name.

  2. Clique no menu suspenso Data Type e selecione Autocomplete.

  3. 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.

  4. 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.

  1. Na janela Add Field Mapping, selecione title no menu suspenso Field Name.

  2. Clique no menu suspenso Data Type e selecione Autocomplete.

  3. 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.

  4. Clique em Add.

  5. Repita as etapas de b a d.

  6. Clique no menu suspenso Data Type e selecione String.

  7. 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.

  1. Na janela Add Field Mapping, selecione email no menu suspenso Field Name.

  2. Clique no menu suspenso Data Type e selecione Autocomplete.

  3. 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.

  4. 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}

Dica

Consulte também: Exemplos adicionais de definição de índice

Voltar

array