Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
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 cadena para autocompletar. Puede consultar campos indexados como tipo autocomplete utilizando 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 .

autocomplete el tipo no se incluye en el mapeo dinámico por defecto. Para indexar campos como tipo autocomplete, puede utilizar mapeos estáticos o configurar un typeSet para incluir autocomplete en el mapeo dinámico.

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.

Recomendamos establecer el valor de maxGrams igual o menor que 15 para optimizar el rendimiento. Un valor más alto aumenta el tamaño del índice y puede tener un impacto en el rendimiento. Si necesitas más de 15 caracteres para la autocompletación, te recomendamos configurar un analizador personalizado para evitar truncar 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, 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 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

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

Para obtener ejemplos que demuestran cómo ejecutar consultas insensibles a mayúsculas y minúsculas, de prefijo, que comienzan con y que contienen usando expresiones regex, consulte Utilice MongoDB Search en lugar de consultas regex.

Volver

arreglo

En esta página