Docs Menu
Docs Home
/ /

Cómo indexar campos para autocompletar

Puedes utilizar la búsqueda de MongoDB autocomplete Escriba para indexar valores de texto en campos de cadena para autocompletar. Puede consultar campos indexados como tipo autocomplete utilizando operador de 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.

  • 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 .

autocomplete El tipo no se incluye en la asignación dinámica de forma predeterminada. Para indexar campos como autocomplete tipo, puede usar asignaciones estáticas o configurar un typeSet para incluir autocomplete en la asignación dinámica.

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.

Nota

Recomendamos configurar el maxGrams valor como menor o igual a 15 para optimizar el rendimiento. Un valor mayor aumenta el tamaño del índice y puede afectar al rendimiento. Si necesita más de 15 caracteres para el autocompletado, le recomendamos configurar un analizador personalizado para evitar truncamientos en las consultas.

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 - crear tokens indexables, denominados grams, a partir de secuencias de caracteres de longitud variable que comienzan en el lado izquierdo de las palabras delimitadas por el analizador utilizado con esta asignación de autocompletar.

  • rightEdgeGram - crear tokens indexables, denominados grams, a partir de secuencias de caracteres de longitud variable que comienzan en el lado derecho de las palabras delimitadas por el analizador utilizado con esta asignación de autocompletar.

  • nGram - Crea 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 ocupa más espacio y tiempo para indexar el campo. nGram es más adecuado para consultar idiomas con palabras largas y compuestas o idiomas que no usan 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 minGrams de 2 y un valor maxGrams de 5, MongoDB Search indexa la siguiente secuencia de caracteres en su índice de búsqueda, en función del valor tokenization que se elija:

th
the
the{SPACE}
the q
qu
qui
quic
uick
...
og
dog
{SPACE}dog
y dog
zy
azy
lazy
{SPACE}lazy
he
the
{SPACE}the
r the
er
ver
over
{SPACE}over
...
th
the
the{SPACE}
the q
he
he{SPACE}
he q
he qu
e{SPACE}
e q
e qu
e qui
{SPACE}q
{SPACE}qu
{SPACE}qui
{SPACE}quic
qu
qui
quic
quick
...

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

Bandera que indica si se debe realizar normalizaciones Por ejemplo, incluir o eliminar 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 consulta. Por ejemplo, una búsqueda de cafè devuelve resultados con los caracteres cafè y cafe, ya que MongoDB Search devuelve resultados con y sin signos diacríticos.

  • false No realice normalizaciones como ignorar los signos diacríticos en el índice ni en el texto de la consulta. Por lo tanto, MongoDB Search solo devuelve resultados que coinciden con las cadenas, con o sin signos diacríticos, en la consulta. Por ejemplo, una búsqueda de cafè solo devuelve resultados con los caracteres cafè. Una búsqueda de cafe solo devuelve resultados 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.

Para obtener ejemplos que demuestran cómo ejecutar consultas que no distinguen entre mayúsculas y minúsculas, con prefijo, comienza con y contiene mediante expresiones regulares,consulte Usar la búsqueda de MongoDB en lugar de consultas regulares.

Volver

arreglo

En esta página