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.
String fields inside an array of documents indexed as the embeddedDocuments type. For index build time considerations, see Index Build Time.
For dynamic mapping considerations, see Dynamic Mappings.
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 For |
| ||||||||||||||||||||||
| 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 For performance considerations, see Tokenization Performance. |
| ||||||||||||||||||||||
| 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
The maxGrams option specifies the maximum length of substrings generated during indexing. Increasing maxGrams improves matching for longer queries by generating more substrings. Setting it beyond what you need can increase index size and affect indexing performance.
Consider the following best practices when you configure maxGrams:
Default to no more than 15. Set
maxGramsto no more than15when possible to avoid unnecessary index growth.Align with query length. Set
maxGramsbased on the typical length of user queries, rather than indexing for worst-case scenarios.Avoid over-indexing. If your queries are shorter than your current
maxGramsvalue, you may be indexing more data than necessary.Use an alternative for longer queries. If your queries regularly exceed 15 characters, use a custom analyzer for
prefix,contains, andsuffixpatterns.
Tokenization Performance
Indexing a field for autocomplete with an edgeGram, rightEdgeGram, or nGram tokenization strategy requires more computation and index storage than indexing a string field.
For the specified tokenization strategy, MongoDB Search concatenates sequential tokens before emitting them ("shingling"). MongoDB Search emits tokens between minGrams and maxGrams characters in length:
Mantém tokens menores que
minGrams.Joins tokens greater than
minGramsbut less thanmaxGramsto the next tokens to create tokens up to the specified maximum number of characters in length.
Mapeamentos dinâmicos
The default field types that MongoDB Search uses for dynamic mappings do not include the autocomplete type. Using the autocomplete type in dynamic mappings can increase index size and resource usage, and produce unexpected scoring results. Use autocomplete in static mappings.
However, if you need to include autocomplete in dynamic mappings, you can add it to a custom typeSet definition. To learn more about autocomplete and custom typeSet configurations, see Autocomplete.
Index Build Time
If your dataset has many documents or a wide data range, building this index for the autocomplete operator can take some time. To reduce the impact on other indexes and queries while the new index builds, create a separate index with only the autocomplete type.
For index performance considerations, see Index Performance Considerations.
Saiba mais
Para saber mais sobre o operador autocomplete e ver queries de exemplo, consulte preenchimento automático.
Para exemplos que demonstram como executar query que não diferenciam maiúsculas de minúsculas, prefixo, início com e contém usando expressões regex, consulte Usar pesquisa do MongoDB em vez de queries Regex.