Menu Docs

Como indexar campos de string para filtragem e classificação eficientes

Você pode usar o tipo do Atlas Search token para indexar campos de string para classificar os resultados do Atlas Search. Você pode então usar a opção $search sort na sua consulta para classificar os resultados pelo campo indexado. Para mais informações, consulte Classificar Resultados do Atlas Search. Você também pode usar o tipo Atlas Search token para indexar campos string de caracteres para pré-filtrar os dados que as consultas $vectorSearch analisam. Para saber mais, consulte Atlas Vector Search Overview.

Para executar queries nos campos de string usando os seguintes operadores, você deve indexar o campo como o tipo token do Atlas Search:

Para saber mais, consulte a documentação de cada operador.

Quando você indexa um campo como tipo token , o Atlas Search indexa os termos na string como um único token (termo pesquisável) e os armazena em um armazenamento em colunas para filtragem eficiente ou operações de classificação. Você pode utilizar um normalizador para transformar o token. Por padrão, o normalizador é configurado para none e então o Atlas Search indexa as strings em sua forma original.

A principal diferença entre os tipos string e token do Atlas Search é que o Atlas Search cria um ou mais tokens para campos indexados como tipo string , enquanto o Atlas Search cria apenas um único token para campos indexados como tipo token .

Se uma string indexada como um tipo de campo token exceder 8181 caracteres, o Atlas Search a truncará para 8181 caracteres antes de indexar.

Ao indexar um campo como o tipo token , você também deve indexar esse campo como o tipo string para fazer uma query do valor do texto usando operadores como texto, frase, etc. Para os seguintes operadores, você não precisa indexar o campo como tipo string também para fazer a query do valor de texto no campo:

Você não pode indexar filhos de campos indexados como o tipo embeddedDocuments como o tipo token .

Para definir o índice para o tipo token , 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.

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

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

  7. Clique em Add.

A seguir está a sintaxeJSON para o tipo token. Substitua a definição de índice padrão pelo seguinte. Para saber mais sobre os campos, consulte Propriedades do campo.

{
"mappings": {
"dynamic": true|false,
"fields": {
"<field-name>": {
"type": "token",
"normalizer": "lowercase | none"
}
}
}
}

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

Opção
Tipo
necessidade
Descrição
Default

type

string

Obrigatório

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

normalizer

string

Opcional

Tipo de transformação para executar no valor do campo. O valor pode ser um dos seguintes:

  • lowercase - para transformar valores de texto em campos de string em minúsculas.

  • none - para não realizar nenhuma transformação.

Se você não definir esta opção explicitamente, o padrão será none.

none

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.

A seguinte definição de índice indexa valores de string no campo title como tipo Atlas Search token e converte o valor de campo para lowercase, que permite a você fazer o seguinte:

  • Executa a classificação sem diferenciação de maiúsculas e minúsculas, conforme especificado por normalizer, no campo title .

  • Execute query de correspondência exata no campo title utilizando os seguintes operadores:

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

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

  3. Expanda Token Properties e selecione lowercase no menu suspenso Normalizer .

  4. Clique em Add.

Substitua a definição de índice padrão pela seguinte definição de índice.

{
"mappings": {
"dynamic": false,
"fields": {
"title": {
"type": "token",
"normalizer": "lowercase"
}
}
}
}

A definição de índice a seguir indexa o campo genres como string e token tipos para retornar o seguinte:

  • Pesquise resultados para queries usando operadores do Atlas Search como text, phrase e outros operadores que executam pesquisa de texto no campo genres.

  • Resultados classificados para queries que usam a opção $search de classificação no campo genres campo.

  • Correspondências exatas para queries usando operadores do Atlas Search como igual, em e faixa.

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

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

  3. Clique em Add.

  4. Repita a etapa 1 e selecione String no menu suspenso Data Type.

  5. Revise a configuração padrão do String Properties e clique em Add.

Substitua a definição de índice padrão pela seguinte definição de índice.

{
"mappings": {
"dynamic": false,
"fields": {
"genres": [{
"type": "string"
},
{
"type": "token"
}]
}
}
}