Docs Menu
Docs Home
/ /

Modelar datos para el soporte de la búsqueda de palabras clave

Nota

La búsqueda por palabras clave no es lo mismo que la búsqueda de texto o la búsqueda de texto completo, y no ofrece funciones de derivación ni de procesamiento de texto. Consulte la Sección Limitaciones de los índices de palabras clave para obtener más información.

En 2.4, MongoDB proporciona una función de búsqueda de texto. Ver Índices de texto sobre implementaciones autogestionadas para obtener más información.

Si su aplicación necesita realizar consultas sobre el contenido de un campo que contiene texto, puede realizar coincidencias exactas en el texto o utilizar $regex Utilizar coincidencias de patrones de expresiones regulares. Sin embargo, para muchas operaciones con texto, estos métodos no satisfacen los requisitos de la aplicación.

Este patrón describe un método para facilitar la búsqueda por palabras clave mediante MongoDB, que utiliza palabras clave almacenadas en una matriz en el mismo documento que el campo de texto. Combinado con un índice multiclave, este patrón permite realizar búsquedas por palabras clave en la aplicación.

Para añadir estructuras a su documento que admitan consultas basadas en palabras clave, cree un campo de matriz en sus documentos y añada las palabras clave como cadenas en la matriz. A continuación, puede crear un índice multiclave en la matriz y crear consultas que seleccionen valores de ella.

Ejemplo

Dada una colección de volúmenes de biblioteca que desea ofrecer una búsqueda temática, para cada volumen, agregue la matriz topics y tantas palabras clave como sean necesarias.

Para el volumen Moby-Dick es posible que tenga el siguiente documento:

{ title : "Moby-Dick" ,
author : "Herman Melville" ,
published : 1851 ,
ISBN : 0451526996 ,
topics : [ "whaling" , "allegory" , "revenge" , "American" ,
"novel" , "nautical" , "voyage" , "Cape Cod" ]
}

Luego crea un índice de múltiples claves en la matriz topics:

db.volumes.createIndex( { topics: 1 } )

El índice multiclave crea entradas de índice independientes para cada palabra clave en la matriz topics. Por ejemplo, el índice contiene una entrada para whaling y otra para allegory.

Luego, realiza una consulta basada en las palabras clave. Por ejemplo:

db.volumes.findOne( { topics : "voyage" }, { title: 1 } )

Nota

Una matriz con una gran cantidad de elementos, como una con varios cientos o miles de palabras clave, incurrirá en mayores costos de indexación al insertarla.

MongoDB puede soportar búsquedas de palabras clave utilizando modelos de datos específicos e índices de múltiples claves; sin embargo, estos índices de palabras clave no son suficientes ni comparables con los productos de texto completo en los siguientes aspectos:

  • Derivación. Las consultas de palabras clave en MongoDB no pueden analizar palabras clave para la raíz o palabras relacionadas.

  • Sinónimos. Las funcionalidades de búsqueda basadas en palabras clave deben proporcionar soporte para sinónimos o queries relacionadas en la capa de aplicación.

  • Clasificación. Las búsquedas de palabras clave descritas en este documento no permiten ponderar los resultados.

  • Indexación asincrónica. MongoDB crea índices sincrónicamente, lo que significa que los índices utilizados para los índices de palabras clave siempre están actualizados y pueden operar en tiempo real. Sin embargo, los índices masivos asincrónicos pueden ser más eficientes para ciertos tipos de contenido y cargas de trabajo.

Volver

Datos de IoT

En esta página