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

autocomplete Operador

autocomplete

El operador autocomplete realiza una búsqueda de una palabra o frase que contiene una secuencia de caracteres de una string de entrada incompleta. Los campos que deseas consultar con el operador autocomplete deben estar indexados con el tipo de dato de autocompletado en la definición de índice de la colección. Para obtener información sobre cómo configurar tu índice para autocompletar, consulta Cómo indexar campos para autocompletar.

Nota

MongoDB Search podría devolver resultados inexactos para consultas con más de tres palabras en una sola string.

Se puede utilizar el operador autocomplete con aplicaciones de búsqueda mientras escribe para predecir palabras con precisión creciente a medida que se ingresan caracteres en el campo de búsqueda de la aplicación. autocomplete devuelve resultados que contienen palabras predichas según la estrategia de tokenización especificada en la definición de índice para la autocompletación.

Si desea compilar sugerencias o menús desplegables utilizando el operador autocomplete de MongoDB Search, le recomendamos que consultar una colección de términos de búsqueda sugeridos o utilice términos de búsqueda anteriores para completar el menú desplegable. Si creas una colección separada de términos de búsqueda sugeridos, puedes definir mapeos de sinónimos en tu índice de MongoDB Search para buscar en tu colección las palabras exactas o alternativas.

autocomplete tiene la siguiente sintaxis:

1{
2 $search: {
3 "index": "<index name>", // optional, defaults to "default"
4 "autocomplete": {
5 "query": "<search-string>",
6 "path": "<field-to-search>",
7 "tokenOrder": "any|sequential",
8 "fuzzy": <options>,
9 "score": <options>
10 }
11 }
12}
Campo
Tipo
Descripción
Necesidad
predeterminado

query

string o arreglo de strings

string o strings que se buscarán. Si hay varios términos en una string, MongoDB Search también busca una coincidencia para cada término de la string por separado.

path

string

Campo indexado para buscar. Este campo debe indexarse como el tipo de dato autocomplete. Para obtener más información, consulta Cómo indexar campos para autocompletado.

El operador autocomplete no soporta las opciones multi o wildcard (*) en el parámetro path. Tampoco admite un arreglo de campos como el valor path.

Para obtener un ejemplo de una consulta del operador autocomplete en varios campos, consulta Búsqueda en varios campos.

fuzzy

Objeto

Habilita la búsqueda difusa. Encuentra cadenas similares al término o términos de búsqueda.

no

fuzzy
.maxEdits

entero

El número máximo de ediciones de un solo carácter requeridas para coincidir con el término de búsqueda especificado. El valor puede ser 1 o 2.

no

2

fuzzy
.prefixLength

entero

Número de caracteres al principio de cada término en el resultado que debe coincidir exactamente.

no

0

fuzzy
.maxExpansions

entero

Cantidad máxima de variaciones a generar y para búsqueda. Este límite aplica por token.

no

50

score

Objeto

Puntuación que asignar a los resultados de los términos de búsqueda coincidentes. Utilice una de las siguientes opciones para modificar la puntuación por defecto:

  • boostMultiplica la puntuación resultante por el número dado.

  • constantSustituye la puntuación del resultado por el número dado.

  • function: Reemplaza la puntuación de resultados con la expresión indicada.

autocomplete ofrece menos fidelidad en la puntuación a cambio de una ejecución de consultas más rápida. Para obtener más información, consulta Conducta de puntuación.

Para obtener información sobre cómo usar score en tu query, consulta Calificación de los Documentos en los Resultados.

no

tokenOrder

string

Orden en el que se realiza la búsqueda de tokens. El valor puede ser uno de los siguientes:

any

Indica que los tokens en la query pueden aparecer en cualquier orden en los documentos. Los resultados contienen documentos donde los tokens aparecen de forma secuencial y no secuencial. Sin embargo, los resultados donde los tokens aparecen de forma secuencial obtienen una puntuación más alta que otros valores no secuenciales.

sequential

Indica que los tokens en la query deben aparecer adyacentes entre sí o en el orden especificado en la query, en los documentos. Los resultados contienen solo documentos donde los tokens aparecen secuencialmente.

no

any

Por defecto, el texto operador utiliza el algoritmo de similitud bm25 para puntuar los documentos según su relevancia con respecto a la query.

Puede cambiar el algoritmo de similitud que se utiliza especificando un algoritmo de similitud diferente en la propiedad similarity.type para los campos autocomplete en su definición de índice de MongoDB Search. Para aprender a configurar un índice de MongoDB Search para el tipo autocomplete, se puede consultar Cómo indexar campos de string.

Para obtener más información sobre los algoritmos de similitud admitidos, consulta Detalles de la puntuación.

Los resultados de la query del operador autocomplete que son coincidencias exactas reciben una puntuación más baja que los resultados que no son coincidencias exactas. MongoDB Search no puede determinar si una string del query coincide exactamente con un texto indexado si se especifican solo los subcadenas de tokens indexados para autocompletado. Para puntuar más alto los resultados exactos, intente la siguiente solución alternativa:

Nota

La siguiente solución alternativa no garantiza puntuaciones más altas para coincidencias exactas en todos los casos.

  1. Indexa el campo como tipo autocompletar y como tipo string.

    MongoDB Search autocomplete aumenta las coincidencias exactas cuando un campo autocomplete también está indexado como un string, aumentando así la puntuación de coincidencias exactas.

  2. Query usando el operador compuesto.

Para ver una demostración de esta solución alternativa, consulte la sección "Búsqueda en varios campos".

Los siguientes ejemplos utilizan la colección movies en la base de datos sample_mflix. Si cargaste el conjunto de datos de muestra en el clúster, puedes crear el índice estático para el autocompletado y ejecutar las consultas de ejemplo en el clúster.

Las siguientes pestañas contienen muestras de definiciones de índices para las edgeGram, rightEdgeGram y nGram estrategias de tokenización. Además del tipo autocompletar, las definiciones de índice de muestra incluyen los tipos string y token en el campo title.

1{
2 "mappings": {
3 "dynamic": false,
4 "fields": {
5 "title": [
6 {
7 "type": "token"
8 },
9 {
10 "type": "string"
11 },
12 {
13 "foldDiacritics": false,
14 "maxGrams": 7,
15 "minGrams": 3,
16 "tokenization": "edgeGram",
17 "type": "autocomplete"
18 }
19 ],
20 "plot": [
21 {
22 "type": "autocomplete",
23 "tokenization": "edgeGram",
24 "minGrams": 2,
25 "maxGrams": 15,
26 "foldDiacritics": true
27 }
28 ]
29 }
30 }
31}
1{
2 "mappings": {
3 "dynamic": false,
4 "fields": {
5 "title": [
6 {
7 "type": "token"
8 },
9 {
10 "type": "string"
11 },
12 {
13 "foldDiacritics": false,
14 "maxGrams": 7,
15 "minGrams": 3,
16 "tokenization": "rightEdgeGram",
17 "type": "autocomplete"
18 }
19 ],
20 "plot": [
21 {
22 "type": "autocomplete",
23 "tokenization": "rightEdgeGram",
24 "minGrams": 2,
25 "maxGrams": 15,
26 "foldDiacritics": true
27 }
28 ]
29 }
30 }
31}
1{
2 "mappings": {
3 "dynamic": false,
4 "fields": {
5 "title": [
6 {
7 "type": "token"
8 },
9 {
10 "type": "string"
11 },
12 {
13 "foldDiacritics": false,
14 "maxGrams": 7,
15 "minGrams": 3,
16 "tokenization": "nGram",
17 "type": "autocomplete"
18 }
19 ],
20 "plot": [
21 {
22 "type": "autocomplete",
23 "tokenization": "nGram",
24 "minGrams": 2,
25 "maxGrams": 15,
26 "foldDiacritics": true
27 }
28 ]
29 }
30 }
31}

➤ Utilice el menú desplegable Seleccione su lenguaje para establecer el idioma del ejemplo en esta página.

La siguiente query busca películas con los caracteres off en el campo title.

Nota

Los resultados pueden variar

MongoDB Search devuelve resultados diferentes dependiendo de la estrategia de tokenización configurada en la definición del índice para el tipo autocompletar. Para obtener más información, consulta Cómo indexar campos para autocompletado.

La siguiente query busca películas con los caracteres pre en el campo title. La consulta utiliza:

Campo

Descripción

maxEdits

Indica que solo se permite una variación de carácter en la string del query pre para que coincida con la query a una palabra en los documentos.

prefixLength

Indica que el primer carácter en pre string del query no puede cambiar al hacer coincidir la query con una palabra en los documentos.

maxExpansions

Indica que se pueden considerar hasta doscientos cincuenta y seis términos similares para pre al hacer coincidir la string del query con una palabra de los documentos.

Nota

Los resultados pueden variar

MongoDB Search devuelve resultados diferentes dependiendo de la estrategia de tokenización configurada en la definición del índice para el tipo autocompletar. Para obtener más información, consulta Cómo indexar campos para autocompletado.

Las siguientes queries demuestran cómo buscar en los campos especificados una palabra o frase que contenga la secuencia de caracteres que se indique en la query.

Las siguientes queries buscan películas con los caracteres men with en el campo title. Las queries también utilizan el campo tokenOrder, que especifica si la query busca tokens en el orden any o en el orden sequential.

Puede buscar el campo title por títulos de películas que comiencen con un término o frase indexando el campo usando el analizador de palabras clave.

Debe indexar el campo utilizando el analizador con la estrategia de tokenización edgeGram para recuperar resultados de la siguiente query de muestra. Si indexas el campo usando cualquier otra funcionalidades incorporadas, MongoDB Search no devuelve ningún resultado porque no indexa tu campo de texto como un único término. La estrategia de tokenización edgeGram crea tokens empezando por el lado izquierdo de las palabras.

También debe configurar foldDiacritics en true para obtener resultados que no dependan de mayúsculas ni minúsculas. Si configuras foldDiacritics a false, la distinción entre mayúsculas y minúsculas del término de query debe coincidir exactamente con la distinción entre mayúsculas y minúsculas en el documento para que MongoDB Search devuelva algún resultado.

{
"mappings": {
"dynamic": false,
"fields": {
"title": [
{
"type": "token"
},
{
"type": "string"
},
{
"foldDiacritics": true,
"maxGrams": 7,
"minGrams": 3,
"analyzer": "lucene.keyword",
"tokenization": "edgeGram",
"type": "autocomplete"
}]
}
}
}

La siguiente query busca títulos de películas que comiencen con el término Fast &.

Nota

Los resultados pueden variar

MongoDB Search devuelve resultados diferentes dependiendo de la estrategia de tokenización configurada en la definición del índice para el tipo autocompletar. Para obtener más información, consulta Cómo indexar campos para autocompletado.

Nota

Los resultados pueden variar

MongoDB Search devuelve resultados diferentes dependiendo de la estrategia de tokenización configurada en la definición del índice para el tipo autocompletar. Para obtener más información, consulta Cómo indexar campos para autocompletado.

La query siguiente busca los caracteres ger en el campo title de la colección movies, con la opción highlight habilitada para el campo title.

Importante

Para resaltar la versión indexada de autocompletado de una ruta, el operador de autocompletado debe ser el único operador que use esa ruta en la query.

Nota

Los resultados pueden variar

MongoDB Search devuelve resultados diferentes dependiendo de la estrategia de tokenización configurada en la definición del índice para el tipo autocompletar. Para obtener más información, consulta Cómo indexar campos para autocompletado.

La siguiente consulta busca en los campos title y plot de la colección movies palabras que comiencen con la cadena de caracteres inter mediante el operador compuesto.

Nota

Los resultados pueden variar

MongoDB Search devuelve resultados diferentes dependiendo de la estrategia de tokenización configurada en la definición del índice para el tipo autocompletar. Para obtener más información, consulta Cómo indexar campos para autocompletado.

Para obtener más información, se debe consultar Cómo ejecutar consultas de MongoDB Search con autocompletar y coincidencia parcial.