Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Una de las características clave que proporciona Azure DocumentDB es la indexación de texto, lo que permite realizar búsquedas y consultas eficaces de datos basados en texto. El servicio implementa índices de texto de la versión 2 . La versión 2 admite la distinción entre mayúsculas y minúsculas, pero no la sensibilidad diacrítica.
Los índices de texto de Azure DocumentDB son estructuras de datos especiales que optimizan las consultas basadas en texto, lo que las hace más rápidas y eficaces. Están diseñados para controlar contenido textual como documentos, artículos, comentarios o cualquier otro tipo de datos con gran cantidad de texto. Los índices de texto usan técnicas como la tokenización, la lematización y las palabras irrelevantes para crear un índice que mejore el rendimiento de las búsquedas basadas en texto.
Prerrequisitos
Una suscripción de Azure
- Si no tiene ninguna suscripción a Azure, cree una cuenta gratuita
Un clúster de Azure DocumentDB existente
- Si no tiene un clúster, cree un nuevo clúster.
Definición de un índice de texto
Para simplificar, consideremos un ejemplo de una aplicación de blog con la siguiente configuración:
-
Nombre de la base de datos:
cosmicworks -
Nombre de la colección:
products
En esta aplicación de ejemplo se almacenan artículos como documentos con la estructura siguiente:
{
"_id": ObjectId("617a34e7a867530bff1b2346"),
"title": "Azure DocumentDB - A Game Changer",
"content": "Azure DocumentDB is a globally distributed, multi-model database service.",
"author": "John Doe",
"category": "Technology",
"published": true
}
Use el
createIndexmétodo con latextopción para crear un índice de texto en eltitlecampo.use cosmicworks; db.products.createIndex({ title: "text" })Nota:
Aunque solo puede definir un índice de texto por colección, Azure DocumentDB le permite crear índices de texto en varios campos para permitirle realizar búsquedas de texto en distintos campos de los documentos.
Opcionalmente, cree un índice para admitir la búsqueda en los
titlecampos ycontent.db.products.createIndex({ title: "text", content: "text" })
Configuración de opciones de índice de texto
Los índices de texto de Azure DocumentDB incluyen varias opciones para personalizar su comportamiento. Por ejemplo, puede especificar el idioma para el análisis de texto, establecer ponderaciones para priorizar determinados campos y configurar búsquedas que no distinguen mayúsculas de minúsculas. Este es un ejemplo de creación de un índice de texto con opciones:
Cree un índice para admitir la búsqueda en los
titlecampos ycontentcon compatibilidad con el idioma inglés. Además, asigne pesos más altos altitlecampo para priorizarlo en los resultados de búsqueda.db.products.createIndex( { title: "text", content: "text" }, { default_language: "english", weights: { title: 10, content: 5 }, caseSensitive: false } )
Pesos en índices de texto
Al crear un índice de texto, puede asignar diferentes pesos a campos individuales del índice. Estos pesos representan la importancia o relevancia de cada campo de la búsqueda. Azure DocumentDB calcula una puntuación y ponderaciones asignadas para cada documento en función de los términos de búsqueda al ejecutar una consulta de búsqueda de texto. La puntuación representa la relevancia del documento en la consulta de búsqueda.
Cree un índice para admitir la búsqueda en los campos
titleycontent. Asigne un peso de 2 al campo "título" y un peso de 1 al campo "contenido".db.products.createIndex( { title: "text", content: "text" }, { weights: { title: 2, content: 1 } } )Nota:
Cuando un cliente realiza una consulta de búsqueda de texto con el término "DocumentDB", la puntuación de cada documento de la colección se calculará en función de la presencia y frecuencia del término en los campos "title" y "content", con mayor importancia dada al campo "title" debido a su mayor peso.
Realizar una búsqueda de texto mediante un índice de texto
Una vez creado el índice de texto, puede realizar búsquedas de texto mediante el operador "text" en las consultas. El operador de texto toma una cadena de búsqueda y la coincide con el índice de texto para buscar documentos relevantes.
Realice una búsqueda de texto para la frase
DocumentDB.db.products.find( { $text: { $search: "DocumentDB" } } )Opcionalmente, use el operador de proyección
$metajunto con el campotextScoreen una consulta para ver el pesodb.products.find( { $text: { $search: "DocumentDB" } }, { score: { $meta: "textScore" } } )
Eliminación de un índice de texto
Para quitar un índice de texto en MongoDB, puede usar el dropIndex() método en la colección y especificar la clave de índice o el nombre del índice de texto que desea quitar.
Quite un índice de texto especificando explícitamente la clave.
db.products.dropIndex({ title: "text" })Quite un índice de texto especificando el nombre único generado automáticamente, opcionalmente.
db.products.dropIndex("title_text")
Limitaciones del índice de texto
- Solo se puede definir un índice de texto en una colección.
- Hint() no se admite en combinación con una consulta mediante la expresión $text.
- Las operaciones de ordenación no pueden usar el orden del índice de texto en MongoDB.
- Los índices de texto pueden ser relativamente grandes y consumir espacio de almacenamiento significativo en comparación con otros tipos de índice.