Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Cómo indexar campos para autocompletar

Puede utilizar la búsqueda de MongoDB autocomplete escriba para indexar valores de texto en campos de string para autocompletado. Puedes consultar campos indexados como tipo autocomplete utilizando el autocomplete operador.

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.

  • Campos de cadena dentro de un arreglo de documentos indexados como el tipo embeddedDocuments.

    Tip

    Si se tiene una gran cantidad de documentos y un amplio rango de datos sobre los que se desea ejecutar consultas de búsqueda de MongoDB utilizando el operador autocomplete, la creación de este índice puede llevar algún tiempo. Alternativamente, se puede crear un índice separado con solo el tipo de autocomplete para reducir el impacto en otros índices y consultas mientras se crea el índice.

    Para aprender más, consulta Consideraciones sobre el rendimiento de MongoDB Índice de búsqueda .

  • El tipo autocomplete no está incluido en el conjunto por defecto de tipos que MongoDB Search utiliza para correspondencias dinámicas. Para indexar dinámicamente los campos de string como el tipo autocomplete, se puede incluir el tipo autocomplete en una definición personalizada de typeSet. Sin embargo, autocomplete tiene características únicas de rendimiento, almacenamiento y puntuación que podrían no ser adecuadas para mapeos dinámicos. Recomendamos usar autocomplete solo en mapeos estáticos. Para aprender más, consulta Rendimiento del índice de MongoDB Search.

El tipo autocomplete de búsqueda de MongoDB toma los siguientes parámetros:

Opción
Tipo
Necesidad
Descripción
predeterminado

type

string

Requerido

Etiqueta legible por humanos que identifica este tipo de campo. El valor debe ser string.

analyzer

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 lucene.kuromoji analizador de lenguaje y los siguientes tokenizadores y filtros de tokens de analizador personalizado:

lucene.standard

maxGrams

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 maxGrams, MongoDB Búsqueda trunca los tokens a la longitud maxGrams.

We recommend setting the maxGrams value to be less than or equal to 15 to optimize performance. A higher value increases the size of the index and can impact performance. If you require more than 15 characters for autocompletion, we recommend configuring custom analyzer to avoid truncating queries.

15

minGrams

Int

Opcional

Número mínimo de caracteres por secuencia indexada. Recomendamos 4 como el valor mínimo. Un valor que sea menor que 4 podría impactar el rendimiento porque el tamaño del índice puede volverse muy grande. Recomendamos el valor por defecto de 2 únicamente para edgeGram.

2

tokenization

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:

  • edgeGram - crea tokens indexados, denominados grams, a partir de secuencias de caracteres de longitud variable que comienzan en el lado izquierdo de las palabras, según lo delimitado por el analizador utilizado con este mapeo de autocompletado.

  • rightEdgeGram - crear tokens indexables, conocidos como grams, a partir de secuencias de caracteres de longitud variable que comienzan en el lado derecho de las palabras a medida que las delimita el analizador utilizado con este mapeo de autocompletar.

  • nGram - crear tokens indexables, denominados grams, deslizando una ventana de caracteres de longitud variable sobre una palabra. MongoDB Search crea más tokens para nGram que para edgeGram o rightEdgeGram. Por lo tanto, nGram requiere más espacio y tiempo para indexar el campo. nGram es más adecuado para consultar lenguajes con palabras largas, compuestas o lenguajes que no utilizan espacios.

edgeGram, rightEdgeGram y nGram se aplican a nivel de letra. Por ejemplo, considere la siguiente oración:

The quick brown fox jumps over the lazy dog.

Cuando se tokeniza con un valor de minGrams de 2 y un valor de maxGrams de 5, MongoDB Search indexa la siguiente secuencia de caracteres en función del valor de tokenization que elijas.

La indexación de un campo para autocompletar con una estrategia de tokenización edgeGram, rightEdgeGram o nGram es más costosa computacionalmente que la indexación de un campo string. El índice ocupa más espacio que un índice con campos string normales.

Para la estrategia de tokenización especificada, MongoDB búsqueda aplica el siguiente proceso para concatenar tokens secuenciales antes de emitirlos. Este proceso a veces se denomina "shingling". Búsqueda de MongoDB emite tokens de entre minGrams y maxGrams caracteres de longitud:

  • Conserva los tokens menores que minGrams.

  • Une los tokens que son mayores que minGrams pero menores que maxGrams a los tokens subsiguientes para crear tokens de hasta el número máximo de caracteres especificado.

edgeGram

foldDiacritics

booleano

Opcional

Flag that indicates whether to perform normalizations como incluir o remover diacríticos del texto indexado. El valor puede ser uno de los siguientes:

  • true - realizar normalizaciones como ignorar los signos diacríticos en el índice y el texto de la query. Por ejemplo, una búsqueda de cafè devuelve resultados con los caracteres cafè y cafe porque MongoDB Search devuelve resultados con y sin signos diacríticos.

  • false - no realices normalizaciones tales como ignorar las marcas diacríticas en el índice y el texto de la query. Así, MongoDB Search devuelve únicamente resultados que coinciden con los strings con o sin diacríticos en la query. Por ejemplo, una búsqueda de cafè devuelve resultados solo con los caracteres cafè. Una búsqueda de cafe devuelve resultados solo con los caracteres cafe.

true

similarity.type

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: bm25, boolean o stableTfl.

Para aprender más sobre los algoritmos de similitud disponibles, consulte Detalles de la puntuación.

bm25

Para aprender más sobre el operador autocomplete y ver queries de ejemplo, consulta autocompletado.

For examples that demonstrate how to run case-insensitive, prefix, starts with, and contains queries using regex expressions, see Use MongoDB Search Instead of Regex Queries.

Volver

arreglo

En esta página