Definição
autocompleteO operador
autocompleterealiza 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 operadorautocompletedevem 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.
Exemplos de casos de uso
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.
Sintaxe
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 }
Opções
Campo | Tipo | Descrição | necessidade | Default | ||||
|---|---|---|---|---|---|---|---|---|
| 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 | |||||
| string | Campo indexado para pesquisar. Este campo deve ser indexado como o tipo de dados O operador Para obter um exemplo de uma query com o operador | sim | |||||
| 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 | no |
| ||||
fuzzy.prefixLength | inteiro | Número de caracteres no início de cada termo no resultado que deve corresponder exatamente. | no |
| ||||
fuzzy.maxExpansions | inteiro | Número máximo de variações para gerar e pesquisar. Este limite se aplica por token. | no |
| ||||
| 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:
Para obter informações sobre como utilizar o | no | |||||
| string | Ordem na qual procurar tokens. O valor pode ser um dos seguintes:
| no |
|
Comportamento de pontuação
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.
Indexe o campo como tipos de preenchimento automático e string .
O MongoDB Search
autocompleteaumenta as correspondências exatas quando um campoautocompletetambém é indexado como umstring, aumentando assim a pontuação das correspondências exatas.query usando o operador composto.
Para uma demonstração desta solução alternativa, consulte Pesquisar em vários campos.
Exemplos
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.
Definição de Índice
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.
Exemplo básico
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.
exemplo de fuzzy
Exemplo básico
As queries a seguir procuram filmes com os caracteres pre no campo title. A query usa:
Campo | Descrição |
| Indica que somente uma variação de caractere é permitida na string de query |
| Indica que o primeiro caractere na cadeia de caracteres de query |
| Indica que até duzentos e cinquenta e seis termos semelhantes para |
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.
Exemplo de correspondência parcial
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.
Exemplo de pedido de token
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.
Começa com exemplo
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 &.
Exemplo de any simples
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.
Exemplo de sequential simples
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.
Exemplo de realce
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.
Pesquisar em vários campos
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.
Resultados do intervalo por meio de queries facet
Saiba mais
Para saber mais, consulte Como executar queries de pesquisa do MongoDB de preenchimento automático e correspondência parcial.