Puedes usar el tipo de búsqueda autocomplete de MongoDB para indexar valores de texto en fields de string para el autocompletado. Puedes consultar campos indexados como tipo autocomplete utilizando el operador autocompletar.
También se puede usar el tipo autocomplete para indexar:
Campos cuyo valor es un arreglo de cadenas de texto. Para obtener más información, consulta Cómo indexar los elementos de un arreglo.
String fields dentro de un arreglo de documentos indexados como el tipo embeddedDocuments. Para consideraciones sobre el tiempo de creación de índices, consulte Tiempo de creación de índices.
Para consideraciones de asignación dinámica, consulte Asignaciones dinámicas.
Define the Index for the autocomplete Type
Configure autocomplete Field Properties
El tipo autocomplete de búsqueda de MongoDB toma los siguientes parámetros:
Opción | Tipo | Necesidad | Descripción | predeterminado | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| string | Requerido | Etiqueta legible por humanos que identifica este tipo de campo. El valor debe ser | |||||||||||||||||||||||
| string | Opcional | Nombre del analizador que se debe utilizar con este mapeo de autocompletado. Se puede utilizar cualquier analizador de búsqueda de MongoDB excepto el |
| ||||||||||||||||||||||
| Int | Opcional | Número máximo de caracteres por secuencia indexada. El valor limita la longitud de caracteres de los tokens indexados. Cuando buscas términos más largos que el valor Para conocer las mejores prácticas de |
| ||||||||||||||||||||||
| Int | Opcional | Número mínimo de caracteres por secuencia indexada. Recomendamos |
| ||||||||||||||||||||||
| enum | Opcional | Estrategia de tokenización que se utilizará en la indexación del campo para autocompletar. El valor puede ser uno de los siguientes:
Cuando se tokeniza con un valor de Para consideraciones de rendimiento, consulte Rendimiento de la tokenización. |
| ||||||||||||||||||||||
| booleano | Opcional | Indicador que señala si se deben realizar normalizaciones como incluir o Remover diacríticos del texto indexado. El valor puede ser uno de los siguientes:
|
| ||||||||||||||||||||||
| string | Opcional | Nombre del algoritmo de similitud que se utilizará con este mapeo de cadenas al puntuar con el operador de autocompletar. El valor puede ser uno de los siguientes: Para aprender más sobre los algoritmos de similitud disponibles, consulte Detalles de la puntuación. |
|
Try an Example for the autocomplete Type
Considerations
maxGrams Configuración
La opción maxGrams especifica la longitud máxima de las subcadenas generadas durante la indexación. El aumento de maxGrams mejora la coincidencia para query más largas al generar más subcadenas. Establecerlo más allá de lo que necesita puede aumentar el tamaño del índice y afectar el rendimiento de la indexación.
Considere las siguientes mejores prácticas al configurar maxGrams:
Por defecto, no más de 15. Establece
maxGramsen no más de15cuando sea posible para evitar un crecimiento innecesario del índice.Alinee con la longitud de la query. Establezca
maxGramsen función de la longitud típica de las query de los usuarios, en lugar de indexación para los peores escenarios.Evite la indexación excesiva. Si sus query son más cortas que su valor actual de
maxGrams, es posible que esté haciendo más indexación de datos de los necesarios.Usa una alternativa para las query más largas. Si tus querys superan habitualmente los 15 caracteres, usa un analizador personalizado para patrones de tipo
prefix,containsysuffix.
Rendimiento de la tokenización
La indexación de un campo para autocompletar con una estrategia de tokenización edgeGram, rightEdgeGram o nGram requiere más cómputo y almacenamiento de índice que la indexación de un campo string.
Para la estrategia de tokenización especificada, MongoDB Search concatena tokens secuenciales antes de emitirlos ("shingling"). MongoDB Search emite tokens de entre minGrams y maxGrams caracteres de longitud:
Conserva los tokens menores que
minGrams.Une los tokens mayores que
minGramspero menores quemaxGramsa los tokens siguientes para crear tokens de hasta el número máximo de caracteres especificado.
Mapeos dinámicos
Los tipos de campo por defecto que MongoDB Search utiliza para las asignaciones dinámicas no incluyen el tipo autocomplete. El uso del tipo autocomplete en asignaciones dinámicas puede aumentar el tamaño del índice y el uso de recursos, y producir resultados de puntuación inesperados. Utilice autocomplete en asignaciones estáticas.
Sin embargo, si necesita incluir autocomplete en asignaciones dinámicas, puede agregarlo a una definición typeSet personalizada. Para obtener más información sobre autocomplete y las configuraciones personalizadas de typeSet, consulte Tamaño y configuración del índice.
Tiempo de creación de índices
Si su conjunto de datos tiene muchos documentos o un amplio rango de datos, la creación de este índice para el operador de autocompletar puede llevar algún tiempo. Para reducir el impacto en otros índices y queries mientras se crea el nuevo índice, cree un índice separado con solo el tipo autocomplete.
Para consideraciones sobre el rendimiento del índice, consulte Consideraciones sobre el rendimiento del índice.
Obtén más información
Para aprender más sobre el operador autocomplete y ver queries de ejemplo, consulta autocompletado.
Para ejemplos que demuestran cómo ejecutar consultas que no distinguen entre mayúsculas y minúsculas, de prefijo, que comienzan con y que contienen mediante expresiones regex, consulta Usa MongoDB Search en lugar de queries regex.