Docs Menu
Docs Home
/ /

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

El synonyms opción en una búsqueda de MongoDB Ladefinición de índice especifica asignaciones de sinónimos que permiten indexar y buscar en la colección palabras con el mismo significado o casi el mismo. Para configurar un índice de MongoDB Search con asignaciones de sinónimos, debe:

  1. Agregue una colección de documentos de sinónimos a su clúster. Asegúrese 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 correctamente formateado

  2. Haga referenciaa la colección de fuentes de sinónimos en una asignación de sinónimos en la definición del í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 de nivel gratuito (M0)

Una definición de índice solo puede tener una asignación de sinónimos.

Esta página describe el formato de la colección de origen de sinónimos y cómo definir asignaciones de sinónimos que hagan referencia a la colección de origen de sinónimos en su índice de búsqueda de MongoDB.

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 vacías, debe indexar el campo utilizando el Analizador estándar o agregar la entrada de sinónimo sin la palabra vacía.

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 cadena vacía.

Requerido

source

Documento

Colección de fuentes para sinónimos. La source opción ocupa el collection campo.

Requerido

source.collection

string

Nombre de la colección de MongoDB que se encuentra en la misma base de datos que el índice de búsqueda de MongoDB. Los documentos de esta colección deben tener el formato descrito en la sección "Documentos de la colección fuente 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 de 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

matriz de cadenas

Requerido para asignaciones mappingType: explicit.

Para las asignaciones explicit, los valores synonyms son sinónimos de cada token input. El valor no puede ser una cadena vacía ni estar compuesta exclusivamente por espacios. Puede especificar el mismo valor input en varios documentos.

Condicional

mappingType

string

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

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

  • explicit - input Coincide con tokens y los reemplaza con todos los synonyms tokens alternativos. Para ver un ejemplo de mappingType este, consulte el Ejemplo.

Requerido

synonyms

matriz 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 utilizar sinónimos con palabras vacías, debe agregar la entrada de sinónimo sin la palabra vacía o indexar el campo utilizando el Analizador estándar.

Para mappingType ver un ejemplo de cada, consulte Ejemplos de documentos de la colección fuente.

Requerido

Los documentos de la colección pueden contener otros campos. Son aditivos y las asignaciones se deduplican. Los sinónimos de MongoDB Search se almacenan como una colección Atlas independiente, lo que contabiliza la misma cuota de almacenamiento que cualquier otra colección en Atlas. MongoDB Search podría utilizar más recursos computacionales para aplicar sinónimos de colecciones de origen de sinónimos más grandes.

Advertencia

No incluya documentos de sinónimos no válidos en la colección de fuentes de sinónimos. MongoDB Search no crea índices si estos utilizan asignaciones de sinónimos que hacen referencia a colecciones con documentos no válidos. Incluya únicamente documentos de sinónimos con el formato correcto en su colección de fuentes de sinónimos.

MongoDB no recomienda agregar documentos de sinónimos a colecciones de fuentes de sinónimos en un entorno de producción sin validar primero que tengan el formato correcto y se comporten como se espera en un entorno de prueba.

Si realiza cambios en su colección de fuentes de sinónimos:

  • No es necesario volver a indexar porque MongoDB Search detecta los cambios y actualiza automáticamente su mapa de sinónimos interno.

  • El tiempo que tarda MongoDB Search en actualizar las asignaciones de sinónimos aumenta con el tamaño de la colección de fuentes de sinónimos. Tenga en cuenta que los cambios en los documentos de sinónimos se reflejan eventualmente en los resultados de su consulta de 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, seleccione Visual Editor.

  2. Cuando vaya a Add synonym mapping su índice, seleccione 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 consulta de texto carpara, vehicle o automobile aplicando una asignación de sinónimos que incluye dicho documento, MongoDB Search devuelve documentos que contienen el car término, vehicle automobileo.

En el siguiente documento de colección de origen de ejemplo, mappingType se establece en explicit para que los tokens beer, brew y pint se configuren para ser sinónimos del token input beer.

{
"mappingType": "explicit",
"input": ["beer"],
"synonyms": ["beer", "brew", "pint"]
}

Para una consulta de texto de beer que aplica una asignación de sinónimos que incluye dicho documento, MongoDB Search devuelve documentos que contienen los términos "cerveza", "brew" o "pinta" porque el input token beer está asignado explícitamente a todos estos synonyms tokens. Sin embargo, para una consulta pint de, MongoDB Search no encuentra documentos que contengan beer porque pint no está asignado explícitamente beer a.

La siguiente colección denominada synonymous_terms es un ejemplo de colección fuente de sinónimos que se puede utilizar 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