Como indexar campos de string para filtragem e classificação eficientes
Nesta página
Você pode usar o tipo token
do Atlas Search para indexar campos dastring para classificar os resultados do Atlas Search. Você pode então usar a opção $search
sort
em sua query para classificar os resultados pelo campo indexado. Para mais informações, consulte Classificar Resultados do Atlas Search. Você também pode usar o tipo token
do Atlas Search para indexar campos da string para pré-filtrar os dados que as queries $vectorSearch
analisam. Para saber mais, consulte Visão geral do Atlas Vector Search.
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.
Revise o comportamento do token
tipo
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.
token
Revise as limitações de tipo
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
.
Definir o índice para o token
tipo
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.
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.
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.Clique no menu suspenso Data Type e selecione Token.
(Opcional) Expanda e configure o Token Properties para o campo. Para saber mais, consulte Como configurar propriedades de campo
token
.Clique em Add.
A seguir está a sintaxe JSON 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" } } } }
Configurar token
propriedades de campo do
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:
Se você não definir esta opção explicitamente, o padrão será | none |
Experimente um exemplo para o token
tipo de
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 campotitle
.Execute query de correspondência exata no campo
title
utilizando os seguintes operadores:
Na janela Add Field Mapping, selecione title no menu suspenso Field Name.
Clique no menu suspenso Data Type e selecione Token.
Expanda Token Properties e selecione
lowercase
no menu suspenso Normalizer .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 seguinte definição de índice indexa o campo genres
como string
e token
tipos para retornar o seguinte:
Resultados da pesquisa para queries utilizando operadores do Atlas Search , como texto, frase e outros operadores que executam pesquisa de texto no campo
genres
.Resultados ordenados para queries utilizando a
$search
opção de classificação nogenres
campo .Correspondências exatas para queries usando operadores do Atlas Search, como igual, em e faixa.
Na janela Add Field Mapping, selecione genres no menu suspenso Field Name.
Clique no menu suspenso Data Type e selecione Token.
Clique em Add.
Repita a etapa 1 e selecione String no menu suspenso Data Type .
Revise a configuração padrão para 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" }] } } }