La synonyms opción en una búsqueda de MongoDB index definition especifica asignaciones de sinónimos que permiten indexar y buscar en la colección palabras que tienen el mismo o casi el mismo significado. Para configurar un índice de búsqueda de MongoDB Search con mapeos de sinónimos, debes:
Agrega una colección de documentos de sinónimos a tu clúster. Asegúrate de que:
Su colección está en la misma base de datos que el índice que hará referencia a la colección
Los documentos son formateado correctamente
Referencia la colección fuente de sinónimos en una asignación de sinónimos en la definición de índice.
Una asignación de sinónimos configura un índice de búsqueda de MongoDB para admitir consultas que apliquen sinónimos de una colección de origen de sinónimos en la misma base de datos que la colección que se está indexando. Solo se pueden usar sinónimos en consultas que utilicen el operador de texto o frase.
Nota
Limitación del clúster del nivel gratuito (M0)
Una definición de índice solo puede tener una asignación de sinónimos.
En esta página se describe el formato de la colección de fuentes de sinónimos y cómo definir mapeos de sinónimos que hagan referencia a la colección de fuentes de sinónimos en tu índice de MongoDB Search.
Sintaxis
synonyms tiene la siguiente sintaxis en una definición de índice:
1 { 2 "synonyms": [ 3 { 4 "name": "<synonym-mapping-name>", 5 "source": { 6 "collection": "<source-collection-name>" 7 }, 8 "analyzer": "<synonym-mapping-analyzer>" 9 } 10 ] 11 }
opciones
synonyms toma los siguientes campos en una definición de índice:
Campo | Tipo | Descripción | Necesidad |
|---|---|---|---|
| string | Nombre del analizador a utilizar con esta asignación de sinónimos. Puede utilizar una asignación de sinónimos para realizar queries solo sobre los campos analizados con el mismo analizador. Para utilizar sinónimos con palabras de exclusión, debe indexar el campo utilizando el Analizador Estándar o agregar la entrada del sinónimo sin la palabra de exclusión. Puede utilizar cualquier analizador de búsqueda de MongoDB excepto los siguientes:
Tokenizadores de analizadores personalizados y filtros de tokens: | Requerido |
| string | Nombre de la asignación de sinónimos. El nombre debe ser único en la definición del índice. El valor no puede ser una string vacía. | Requerido |
| Documento | Colección fuente para sinónimos. La opción | Requerido |
| string | Nombre de la colección MongoDB que se encuentra en la misma base de datos que el índice MongoDB Search. Los documentos de esta colección deben estar en el formato descrito en los Documentos de la Colección de Fuentes de Sinónimos. | Requerido |
Documentos de colección de fuentes de sinónimos
Cada documento en la colección especificada como fuente para los sinónimos describe cómo una o más palabras se relacionan con uno o más sinónimos de esas palabras.
Nota
En los clústeres del nivel gratuito, la colección de sinónimos no puede superar los 10,000 documentos.
Formato de los documentos de la colección de fuentes de términos sinónimos
Debe configurar cada documento con los siguientes campos.
Campo | Tipo | Descripción | Necesidad |
|---|---|---|---|
| Arreglo de cadenas | Obligatorio para Para los mapeos de | Condicional |
| string | Tipo de mapeo. El valor puede ser uno de los siguientes: | Requerido |
| Arreglo de cadenas | Palabras que son sinónimos entre sí si Para usar sinónimos con palabras vacías, debes agregar la entrada de sinónimo sin la palabra vacía o indexar el campo usando el Analizador Estándar. Para un ejemplo de cada | Requerido |
Los documentos de la colección pueden contener otros campos. Los documentos en la colección son acumulativos, y las asignaciones están deduplicadas. Los sinónimos de MongoDB Search se almacenan como una colección Atlas independiente, que cuenta para la misma cuota de almacenamiento que cualquier otra colección en Atlas. MongoDB Search podría utilizar más recursos de cómputo para aplicar sinónimos de colecciones de sinónimos de mayor tamaño.
Advertencia
No incluyas documentos inválidos de sinónimos en la colección fuente de sinónimos. MongoDB Search no crea índices si los índices usan asignaciones de sinónimos que hacen referencia a colecciones con documentos no válidos. Incluye solo documentos de sinónimos que estén debidamente formateados en tu colección fuente de sinónimos.
MongoDB no recomienda agregar documentos sinónimos a las colecciones de origen de sinónimos en un entorno de producción sin antes validar que estén correctamente formateados y se comporten como se espera en un entorno de pruebas.
Cambios en los documentos de la colección de fuentes de sinónimos
Si realizas cambios en tu colección de origen de sinónimos:
No es necesario volver a indexar porque MongoDB Search supervisa los cambios y actualiza automáticamente su mapa interno de sinónimos.
El tiempo que le toma a MongoDB Search actualizar los mapeos de sinónimos aumenta con el tamaño de la colección de origen de sinónimos. Ten en cuenta que los cambios a los documentos de sinónimos se reflejan eventualmente en tus resultados de query en MongoDB Search.
Ejemplos de documentos de colección
Ejemplos de documentos de la colección fuente
Atlas proporciona los documentos para los siguientes ejemplos de tipos de mapeo de MongoDB Search en una colección llamada sample_synonyms. Puedes cargar estos documentos en tu clúster en la misma base de datos que tu colección. Para cargar estos documentos en tu clúster, cuando crees el índice para tu colección, haz lo siguiente:
Cuando seleccionas el Configuration Method, selecciona el Visual Editor.
Cuando Add synonym mapping en tu índice, selecciona Load sample collection del menú desplegable Synonym source collection.
equivalent mappingType
En el siguiente documento de colección de origen de ejemplo, mappingType se establece en equivalent para que los tokens car, vehicle y automobile estén configurados para ser sinónimos entre sí.
{ "mappingType": "equivalent", "synonyms": ["car", "vehicle", "automobile"] }
Para una query de texto para car, vehicle o automobile aplicando un mapeo de sinónimos que incluya dicho documento, MongoDB Search devuelve documentos que contengan el término car, vehicle o automobile.
explicit mappingType
En el siguiente ejemplo de documento de la colección fuente, mappingType se define como explicit para que los tokens beer, brew y pint se configuren como sinónimos del token input beer.
{ "mappingType": "explicit", "input": ["beer"], "synonyms": ["beer", "brew", "pint"] }
Para una consulta de texto para beer aplicando un mapeo de sinónimos que incluya dicho documento, MongoDB Search devuelve documentos que contienen los términos "cerveza", "brebaje" o "pinta" porque el token input beer está explícitamente mapeado a todos estos synonyms tokens. Sin embargo, para una query de pint, MongoDB Search no encuentra documentos que contengan beer porque pint no está mapeado explícitamente a beer.
Ejemplo de colección de fuente de sinónimos
La siguiente colección llamada synonymous_terms es una colección de origen de sinónimos de ejemplo que puede utilizarse con la colección movies en la base de datos sample_mflix .
La colección sample_mflix.synonymous_terms contiene los siguientes documentos:
{ "mappingType": "equivalent", "synonyms": ["car", "vehicle", "automobile"] }
{ "mappingType": "explicit", "input": ["race"], "synonyms": ["contest", "rally"] }
{ "mappingType": "equivalent", "synonyms": ["dress", "apparel", "attire"] }
{ "mappingType": "explicit", "input": ["boat"], "synonyms": ["vessel", "sail"] }