Como indexar campos de string para filtragem e classificação eficientes
Nesta página
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.
Revisar o comportamento do tipo token
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.
Revisar Limitações de Tipo token
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 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.
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.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 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" } } } }
Configurar propriedades de campo do token
O tipo token
do Atlas Search usa os seguintes parâmetros:
Opção | Tipo | necessidade | Descrição | Default |
---|---|---|---|---|
| string | Obrigatório | Etiqueta legível por humanos que identifica este tipo de campo. O valor deve ser | |
| 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á |
|
Experimente um exemplo para o tipo token
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 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 campogenres
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 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" }] } } }