Você pode usar o tipo autocomplete do MongoDB Search para indexar valores de texto em campos de string para preenchimento automático. Você pode fazer uma query de campos indexados como tipo autocomplete usando o operador de preenchimento automático.
Você também pode utilizar o tipo autocomplete para indexar:
Campos cujo valor é um array de strings. Para saber mais, consulte Como indexar os elementos de um array.
Campos de string dentro de uma array de documentos indexados como o tipo embeddedDocuments. Para considerações sobre o tempo de construção do índice, consulte Tempo de construção do índice.
Para considerações de mapeamento dinâmico, consulte Mapeamentos dinâmicos.
Definir o índice para o tipo autocomplete
Configurar propriedades de campo do autocomplete
O tipo MongoDB Search autocomplete usa os seguintes parâmetros:
Opção | Tipo | necessidade | Descrição | Default | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| string | necessário | Etiqueta legível por humanos que identifica este tipo de campo. O valor deve ser | |||||||||||||||||||||||
| string | opcional | Nome do analisador para utilizar com este mapeamento com preenchimento automático. Você pode usar qualquer analisador do MongoDB Search, exceto o |
| ||||||||||||||||||||||
| int | opcional | Número máximo de caracteres por sequência indexada. O valor limita o comprimento de caracteres de tokens indexados. Ao pesquisar termos maiores que o valor Para |
| ||||||||||||||||||||||
| int | opcional | Número mínimo de caracteres por sequência indexada. Recomendamos |
| ||||||||||||||||||||||
| enum | opcional | Estratégia de tokenização para indexar o campo para o preenchimento automático. O valor pode ser um dos seguintes:
Quando tokenizado com um valor Para considerações de desempenho, consulte Desempenho de tokenização. |
| ||||||||||||||||||||||
| booleano | opcional | Sinalizador que indica se se deve executar normalizações, como incluir ou remover diacríticos do texto indexado. O valor pode ser um dos seguintes:
|
| ||||||||||||||||||||||
| string | opcional | Nome do algoritmo de similaridade a ser usado com este mapeamento de strings ao pontuar com o operador autocomplete. O valor pode ser um dos seguintes: Para aprender mais sobre os algoritmos de similaridade disponíveis, consulte Detalhes da pontuação. |
|
Experimente um exemplo para o tipo autocomplete
Considerações
maxGrams Configuração
A opção maxGrams especifica o comprimento máximo das substrings geradas durante a indexação. Aumentar maxGrams melhora a correspondência para query mais longas, gerando mais substrings. Defini-lo além do que você precisa pode aumentar o tamanho do índice e afetar o desempenho da indexação.
Considere as seguintes melhores práticas ao configurar maxGrams:
Padrão para não mais de 15. Defina
maxGramspara não mais de15sempre que possível para evitar o crescimento desnecessário do índice.Alinhe com o comprimento da query. Defina
maxGramscom base no comprimento típico das query do usuário, em vez de indexar para cenários de pior caso.Evite a indexação excessiva. Se suas query forem mais curtas do que o valor
maxGramsatual, você poderá estar em indexação mais dados do que o necessário.Use an alternative for longer queries. If your queries regularly exceed 15 characters, use a custom analyzer for
prefix,contains, andsuffixpatterns.
Desempenho da tokenização
A indexação de um campo para preenchimento automático com uma estratégia de tokenização de edgeGram, rightEdgeGram ou nGram requer mais computação e armazenamento de índice do que a indexação de um campo de string.
Para a estratégia de tokenização especificada, o MongoDB Search concatena tokens sequenciais antes de emiti-los ("shingling"). O MongoDB Search emite tokens entre minGrams e maxGrams caracteres de comprimento:
Mantém tokens menores que
minGrams.Une tokens maiores que
minGramsmas menores quemaxGramsa tokens subsequentes para criar tokens até o número máximo especificado de caracteres de comprimento.
Mapeamentos dinâmicos
Os tipos de campo padrão que o MongoDB Search usa para mapeamentos dinâmicos não incluem o tipo autocomplete. O uso do tipo autocomplete em mapeamentos dinâmicos pode aumentar o tamanho do índice e o uso de recursos, e produzir resultados de pontuação inesperados. Use autocomplete em mapeamentos estáticos.
No entanto, se você precisar incluir autocomplete em mapeamentos dinâmicos, poderá adicioná-lo a uma definição typeSet personalizada. Para saber mais sobre autocomplete e configurações personalizadas de typeSet, consulte Tamanho e configuração do índice.
Tempo de construção de índice
Se o seu conjunto de dados tiver muitos documentos ou uma ampla faixa de dados, a criação desse índice para o operador autocomplete pode levar algum tempo. Para reduzir o impacto em outros índices e queries enquanto a nova construção de índice, crie um índice separado com apenas o tipo autocomplete.
Para considerações de desempenho de índice, consulte Considerações de desempenho de índice.
Saiba mais
Para saber mais sobre o operador autocomplete e ver queries de exemplo, consulte preenchimento automático.
For examples that demonstrate how to run case-insensitive, prefix, starts with, and contains queries using regex expressions, see Use $search Instead of $text or $regex.