Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Menu Docs
Página inicial do Docs
/ /

autocomplete Operador

autocomplete

O operador autocomplete realiza uma pesquisa por uma palavra ou frase que contém uma sequência de caracteres de uma string de entrada incompleta. Os campos que você pretende consultar com o operador autocomplete devem ser indexados com o tipo de dados de preenchimento automático na definição de índice da coleção. Para saber como configurar seu índice para preenchimento automático, consulte Como indexar campos para preenchimento automático.

Observação

A Pesquisa do MongoDB pode retornar resultados imprecisos para queries com mais de três palavras em uma única string.

Você pode usar o operador autocomplete com aplicativos de pesquisa conforme você digita para prever palavras com precisão crescente à medida que os caracteres são inseridos no campo de pesquisa do aplicativo. autocomplete retorna resultados que contêm palavras previstas com base na estratégia de tokenização especificada na definição de índice para preenchimento automático.

Se você quiser criar sugestões ou menus suspensos usando o operador MongoDB Search autocomplete, recomendamos que você query uma coleção de termos de pesquisa sugeridos ou use termos de pesquisa anteriores para preencher o menu suspenso. Se você criar uma coleção separada de termos de pesquisa sugeridos, poderá definir mapeamentos de sinônimos em seu índice do MongoDB Search para pesquisar em sua coleção as palavras exatas ou alternativas.

autocomplete tem a seguinte sintaxe:

1{
2 $search: {
3 "index": "<index name>", // optional, defaults to "default"
4 "autocomplete": {
5 "query": "<search-string>",
6 "path": "<field-to-search>",
7 "tokenOrder": "any|sequential",
8 "fuzzy": <options>,
9 "score": <options>
10 }
11 }
12}
Campo
Tipo
Descrição
necessidade
Default

query

cadeia de caracteres ou matriz de cadeias de caracteres

string ou strings para pesquisar. Se houver vários termos em uma string, o MongoDB Search também procurará uma correspondência para cada termo na string separadamente.

sim

path

string

Campo indexado para pesquisar. Este campo deve ser indexado como o tipo de dados autocomplete . Para saber mais, consulte Como indexar campos para preenchimento automático.

O operador autocomplete não é compatível com as opções multi ou wildcard (*) no parâmetro path . Ele também não oferece suporte a uma array de campos como o valor path .

Para obter um exemplo de uma query com o operador autocomplete em vários campos, consulte Pesquisar em vários campos.

sim

fuzzy

objeto

Ative a pesquisa difusa. Encontre strings semelhantes ao procurar termos.

no

fuzzy
.maxEdits

inteiro

Número máximo de edições de caracteres únicos necessárias para corresponder ao termo de pesquisa especificado. O valor pode ser 1 ou 2.

no

2

fuzzy
.prefixLength

inteiro

Número de caracteres no início de cada termo no resultado que deve corresponder exatamente.

no

0

fuzzy
.maxExpansions

inteiro

Número máximo de variações para gerar e pesquisar. Este limite se aplica por token.

no

50

score

objeto

Pontuação a ser atribuída aos resultados do termo de pesquisa correspondente. Use uma das seguintes opções para modificar a pontuação padrão:

  • boost: multiplique a pontuação do resultado pelo número fornecido.

  • constant: substitui a pontuação do resultado pelo número fornecido.

  • function: substitua a pontuação do resultado pela expressão fornecida.

autocomplete oferece menos fidelidade na pontuação em troca de uma execução mais rápida da query. Para saber mais, consulte Comportamento de pontuação.

Para obter informações sobre como utilizar o score em sua consulta, consulte Classificar os documentos nos resultados.

no

tokenOrder

string

Ordem na qual procurar tokens. O valor pode ser um dos seguintes:

any

Indica tokens na query que podem aparecer em qualquer ordem nos documentos. Os resultados contêm documentos onde os tokens aparecem sequencialmente e não sequencialmente. No entanto, os resultados em que os tokens aparecem sequencialmente têm pontuação mais alta do que outros valores não sequenciais.

sequential

Indica que os tokens na query devem aparecer adjacentes uns aos outros ou na ordem especificada na query nos documentos. Os resultados contêm apenas documentos onde os tokens aparecem sequencialmente.

no

any

Como padrão, o operador autocomplete utiliza o algoritmo de similaridade bm25 para pontuar documentos conforme sua relevância para a query.

Você pode alterar qual algoritmo de similaridade é usado especificando um algoritmo de similaridade diferente na propriedade similarity.type para os campos autocomplete na sua definição de índice do MongoDB Search. Para aprender a configurar um índice do MongoDB Search para o tipo autocomplete, consulte Como indexar campos para preenchimento automático.

Para saber mais sobre os algoritmos de similaridade aceitos, consulte Detalhes da pontuação.

Os resultados da query do operador autocomplete que são correspondências exatas recebem uma pontuação inferior aos resultados que não são correspondências exatas. O MongoDB Search não poderá determinar se uma query string é uma correspondência exata para um texto indexado se você especificar apenas as subcadeias de caracteres de token indexadas com preenchimento automático. Para pontuar correspondências exatas mais altas, tente a seguinte solução alternativa:

Observação

A seguinte solução alternativa não garante pontuações mais altas para correspondências exatas em todos os casos.

  1. Indexe o campo como tipos de preenchimento automático e string .

    O MongoDB Search autocomplete aumenta as correspondências exatas quando um campo autocomplete também é indexado como um string, aumentando assim a pontuação das correspondências exatas.

  2. query usando o operador composto.

Para uma demonstração desta solução alternativa, consulte Pesquisar em vários campos.

Os exemplos seguintes utilizam a collection movies no banco de dados sample_mflix. Se você carregou o conjunto de dados de amostra em seu cluster, poderá criar o índice estático para preenchimento automático e executar as queries de exemplo em seu cluster.

As abas a seguir contêm definições de índice de amostra para as estratégias de tokenização edgeGram, rightEdgeGram e nGram. Além do tipo autocomplete, as definições de índice de exemplo incluem os tipos string e token no campo title.

1{
2 "mappings": {
3 "dynamic": false,
4 "fields": {
5 "title": [
6 {
7 "type": "token"
8 },
9 {
10 "type": "string"
11 },
12 {
13 "foldDiacritics": false,
14 "maxGrams": 7,
15 "minGrams": 3,
16 "tokenization": "edgeGram",
17 "type": "autocomplete"
18 }
19 ],
20 "plot": [
21 {
22 "type": "autocomplete",
23 "tokenization": "edgeGram",
24 "minGrams": 2,
25 "maxGrams": 15,
26 "foldDiacritics": true
27 }
28 ]
29 }
30 }
31}
1{
2 "mappings": {
3 "dynamic": false,
4 "fields": {
5 "title": [
6 {
7 "type": "token"
8 },
9 {
10 "type": "string"
11 },
12 {
13 "foldDiacritics": false,
14 "maxGrams": 7,
15 "minGrams": 3,
16 "tokenization": "rightEdgeGram",
17 "type": "autocomplete"
18 }
19 ],
20 "plot": [
21 {
22 "type": "autocomplete",
23 "tokenization": "rightEdgeGram",
24 "minGrams": 2,
25 "maxGrams": 15,
26 "foldDiacritics": true
27 }
28 ]
29 }
30 }
31}
1{
2 "mappings": {
3 "dynamic": false,
4 "fields": {
5 "title": [
6 {
7 "type": "token"
8 },
9 {
10 "type": "string"
11 },
12 {
13 "foldDiacritics": false,
14 "maxGrams": 7,
15 "minGrams": 3,
16 "tokenization": "nGram",
17 "type": "autocomplete"
18 }
19 ],
20 "plot": [
21 {
22 "type": "autocomplete",
23 "tokenization": "nGram",
24 "minGrams": 2,
25 "maxGrams": 15,
26 "foldDiacritics": true
27 }
28 ]
29 }
30 }
31}

➤ Use o menu suspenso Selecione a linguagem para definir a linguagem do exemplo nesta página.

As queries a seguir procuram filmes com os caracteres off no campo title.

Observação

Seus resultados podem variar

O MongoDB Search retorna resultados diferentes, dependendo da estratégia de tokenização configurada na definição do índice para o tipo de preenchimento automático. Para saber mais, consulte Como indexar campos para preenchimento automático.

As queries a seguir procuram filmes com os caracteres pre no campo title. A query usa:

Campo

Descrição

maxEdits

Indica que somente uma variação de caractere é permitida na string de query pre para corresponder a query a uma palavra nos documentos.

prefixLength

Indica que o primeiro caractere na cadeia de caracteres de query pre não pode ser alterado ao corresponder a query a uma palavra nos documentos.

maxExpansions

Indica que até duzentos e cinquenta e seis termos semelhantes para pre podem ser considerados ao corresponder a string de query a uma palavra nos documentos.

Observação

Seus resultados podem variar

O MongoDB Search retorna resultados diferentes, dependendo da estratégia de tokenização configurada na definição do índice para o tipo de preenchimento automático. Para saber mais, consulte Como indexar campos para preenchimento automático.

As queries a seguir demonstram como pesquisar os campos especificados em busca de uma palavra ou frase que contém a sequência de caracteres determinados em sua query.

As queries a seguir procuram filmes com os caracteres men with no campo title. As queries também usam o campo tokenOrder, que especifica se a query pesquisa tokens na ordem any ou na ordem sequential.

Você pode pesquisar no campo title títulos de filmes que começam com um termo ou frase indexando o campo usando o analisador de palavras-chave.

Você deve indexar o campo usando o analisador de palavras-chave com a estratégia de tokenização edgeGram para recuperar os resultados da consulta de exemplo a seguir. Se você indexar o campo usando qualquer outro analisador integrado, o MongoDB Search não retornará nenhum resultado porque não indexa seu campo de texto como um único termo. A estratégia de tokenização do edgeGram cria tokens a partir do lado esquerdo das palavras.

Você também deve definir foldDiacritics como true para retornar resultados independentes de maiúsculas e minúsculas. Se você definir foldDiacritics como false, as letras maiúsculas e minúsculas do termo de query deverão corresponder exatamente às letras maiúsculas e minúsculas no documento para que o MongoDB Search retorne quaisquer resultados.

{
"mappings": {
"dynamic": false,
"fields": {
"title": [
{
"type": "token"
},
{
"type": "string"
},
{
"foldDiacritics": true,
"maxGrams": 7,
"minGrams": 3,
"analyzer": "lucene.keyword",
"tokenization": "edgeGram",
"type": "autocomplete"
}]
}
}
}

A query a seguir pesquisa títulos de filmes que comecem com o termo Fast &.

Observação

Seus resultados podem variar

O MongoDB Search retorna resultados diferentes, dependendo da estratégia de tokenização configurada na definição do índice para o tipo de preenchimento automático. Para saber mais, consulte Como indexar campos para preenchimento automático.

Observação

Seus resultados podem variar

O MongoDB Search retorna resultados diferentes, dependendo da estratégia de tokenização configurada na definição do índice para o tipo de preenchimento automático. Para saber mais, consulte Como indexar campos para preenchimento automático.

A seguinte query procura os caracteres ger no campo title da collection movies, com a opção highlight habilitada para o campo title.

Importante

Para destacar a versão indexada do preenchimento automático de um caminho, o operador de preenchimento automático deve ser o único operador que usa esse caminho na query.

Observação

Seus resultados podem variar

O MongoDB Search retorna resultados diferentes, dependendo da estratégia de tokenização configurada na definição do índice para o tipo de preenchimento automático. Para saber mais, consulte Como indexar campos para preenchimento automático.

A query a seguir pesquisa os campos title e plot da collection movies em busca de palavras que comecem com a cadeia de caracteres inter usando o operador composto .

Observação

Seus resultados podem variar

O MongoDB Search retorna resultados diferentes, dependendo da estratégia de tokenização configurada na definição do índice para o tipo de preenchimento automático. Para saber mais, consulte Como indexar campos para preenchimento automático.

Para saber mais, consulte Como executar queries de pesquisa do MongoDB de preenchimento automático e correspondência parcial.

Voltar

Operadores e coletores

Nesta página