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
/ /

Definir las asignaciones de sinónimos en el índice MongoDB Search

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:

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

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

synonyms tiene la siguiente sintaxis en una definición de índice:

Sintaxis
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}

synonyms toma los siguientes campos en una definición de índice:

Campo
Tipo
Descripción
Necesidad

analyzer

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:

Analizadores de lenguaje:

  • lucene.kuromoji

  • lucene.cjk

Tokenizadores de analizadores personalizados y filtros de tokens:

Requerido

name

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

source

Documento

Colección fuente para sinónimos. La opción source toma el campo collection.

Requerido

source.collection

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

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.

Debe configurar cada documento con los siguientes campos.

Campo
Tipo
Descripción
Necesidad

input

Arreglo de cadenas

Obligatorio para mappingType: explicit asignaciones.

Para los mapeos de explicit, los valores de synonyms son sinónimos de cada input token. El valor no puede ser una string vacía o que contenga solo espacios en blanco. Puede especificar el mismo valor de input en varios documentos.

Condicional

mappingType

string

Tipo de mapeo. El valor puede ser uno de los siguientes:

  • equivalent - describe un conjunto de tokens que son equivalentes entre sí. Para un ejemplo de este mappingType, consulte Ejemplo.

  • explicit - coincide con input tokens y los reemplaza por todos los tokens alternativos synonyms. Para un ejemplo de esto mappingType, consultar Ejemplo.

Requerido

synonyms

Arreglo de cadenas

Palabras que son sinónimos entre sí si mappingType es equivalent o sinónimos de input tokens si mappingType es explicit. synonyms debe tener al menos un valor.

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 mappingType, consulte Ejemplos de documentos de la colección de origen.

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.

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.

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:

  1. Cuando seleccionas el Configuration Method, selecciona el Visual Editor.

  2. Cuando Add synonym mapping en tu índice, selecciona Load sample collection del menú desplegable Synonym source collection.

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.

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.

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"]
}

Volver

Fuente almacenada