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.
La indexación y búsqueda de texto completo en Cosmos DB (en Azure y Fabric) mejora las funcionalidades de búsqueda nativa de la aplicación sin necesidad de un servicio de búsqueda externo. Esta característica utiliza técnicas avanzadas de procesamiento de texto, como stemming, eliminación de palabras vacías y tokenización, para permitir búsquedas de texto eficaces a través de un índice especializado.
¿Qué es la búsqueda de texto completo?
Cosmos DB ofrece indexación y búsqueda de texto completo, diseñado para mejorar las cargas de trabajo de búsqueda y recuperación. Esta característica incluye técnicas avanzadas de procesamiento de texto, como lematización, eliminación de palabras vacías y tokenización, lo que permite búsquedas de texto eficientes y eficaces a través de un índice de texto especializado. La búsqueda de texto completo también incluye puntuación de texto completo con una función que evalúa la relevancia de los documentos en una consulta de búsqueda determinada. BM25, o Mejor coincidencia 25, tiene en cuenta factores como la frecuencia del término, la frecuencia inversa de documentos y la longitud del documento para puntuar y clasificar documentos. Esto ayuda a garantizar que los documentos más relevantes aparezcan en la parte superior de los resultados de búsqueda, mejorando la precisión y la utilidad de las búsquedas de texto.
La búsqueda de texto completo es ideal para varios escenarios, entre los que se incluyen:
Comercio electrónico: busca rápidamente productos basados en descripciones, revisiones y otros atributos de texto.
Administración de contenido: busque eficazmente artículos, blogs y documentos.
Soporte técnico al cliente: recupere incidencias de soporte técnico pertinentes, preguntas más frecuentes y artículos de knowledge base.
Contenido del usuario: analice y busque contenido generado por el usuario, como publicaciones y comentarios.
RAG para bots de chat: mejore las respuestas de bot de chat recuperando información relevante de grandes cuerpos de texto, mejorando la precisión y relevancia de las respuestas.
Aplicaciones de inteligencia artificial multiagente: habilite varios agentes de IA para buscar y analizar de forma colaborativa grandes cantidades de datos de texto, lo que proporciona información completa y matizadas.
Uso de la búsqueda de texto completo
Configure un contenedor con una directiva de texto completo y un índice de texto completo.
Inserte los datos con propiedades de texto.
Ejecute consultas en los datos mediante funciones del sistema de búsqueda de texto completo.
Configuración de directivas e índices de contenedor para la búsqueda híbrida
Para usar las funcionalidades de búsqueda de texto completo, primero debe definir dos directivas:
Directiva de texto completo de nivel de contenedor que define las rutas de acceso que contienen texto para las nuevas funciones del sistema de consulta de texto completo.
Índice de texto completo agregado a la directiva de indexación que permite una búsqueda eficaz.
Puede ejecutar consultas de búsqueda de texto completo sin estas directivas, pero no usan el índice de texto completo y podrían consumir más unidades de solicitud (RU). Sin esta directiva, las búsquedas de texto completo también pueden tardar más tiempo en ejecutarse. Se recomienda definir directivas de índice y contenedor de texto completo.
Política de texto completo
Para cada propiedad de texto que quiera configurar para la búsqueda de texto completo, debe declarar path de la propiedad con texto y language del texto. Una directiva de texto completo simple puede ser:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text",
"language": "en-US"
}
]
}
La definición de varias rutas de acceso de texto se realiza fácilmente agregando otro elemento a la matriz fullTextPolicy:
{
"defaultLanguage": "en-US",
"fullTextPaths": [
{
"path": "/text1",
"language": "en-US"
},
{
"path": "/text2",
"language": "en-US"
}
]
}
Importante
Los caracteres comodín (*, []) no se admiten actualmente en la directiva de texto completo ni en el índice de texto completo.
Para obtener más información y ejemplos de configuración de una directiva de texto completo, consulte ejemplos de directivas de indexación de texto completo.
Compatibilidad con varios idiomas
La compatibilidad con varios idiomas permite indexar y buscar texto en idiomas más allá del inglés. Aplica la tokenización, la lematización y la eliminación de palabras irrelevantes específicas del lenguaje para obtener resultados de búsqueda más precisos.
Nota:
La compatibilidad con varios idiomas está en versión preliminar temprana. El rendimiento y la calidad de la búsqueda pueden ser diferentes de la búsqueda de texto completo en inglés. Por ejemplo, la eliminación de palabras irrelevantes solo está disponible para inglés (en-us) en este momento. La funcionalidad está sujeta a cambios a través de la evolución de la versión preliminar.
Se admiten los siguientes idiomas:
| Language | Código | Eliminación de palabra irrelevante |
|---|---|---|
| Inglés | en-US |
Sí |
| Alemán (versión preliminar) | de-DE |
No |
| Francés (versión preliminar) | fr-FR |
No |
| Italiano (versión preliminar) | it-IT |
No |
| Portugués - Brasil (versión preliminar) | pt-BR |
No |
| Portugués - Portugal (versión preliminar) | pt-PT |
No |
| Español (versión preliminar) | es-ES |
No |
Los códigos de idioma distinguen entre mayúsculas y minúsculas (por ejemplo, en-US no en-us).
Índice de texto completo
Las operaciones de búsqueda de texto completo deben usar un índice de texto completo. Un índice de texto completo se puede definir fácilmente en cualquier directiva de índice de Cosmos DB según el ejemplo siguiente:
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
}
]
}
Al igual que con las directivas de texto completo, los índices de texto completo se pueden definir en varias rutas de acceso:
{
"indexingMode": "consistent",
"automatic": true,
"includedPaths": [
{
"path": "/*"
}
],
"excludedPaths": [
{
"path": "/\"_etag\"/?"
},
],
"fullTextIndexes": [
{
"path": "/text"
},
{
"path": "/text2"
}
]
}
Consultas de búsqueda de texto completo
Las operaciones de búsqueda y puntuación de texto completo se realizan mediante las siguientes funciones del sistema en el lenguaje de consulta:
FULLTEXTCONTAINS: devuelvetruesi una cadena determinada está contenida en la propiedad especificada de un documento. Esta función es útil en unaWHEREcláusula cuando desea asegurarse de que las palabras clave específicas se incluyen en los documentos devueltos por la consulta.FULLTEXTCONTAINSALL: devuelvetruesi todas las cadenas especificadas están contenidas en la propiedad especificada de un documento. Esta función es útil en unaWHEREcláusula cuando desea asegurarse de que se incluyen varias palabras clave en los documentos devueltos por la consulta.FULLTEXTCONTAINSANY: devuelvetruesi alguna de las cadenas especificadas está contenida en la propiedad especificada de un documento. Esta función es útil en unaWHEREcláusula cuando desea asegurarse de que al menos una de las palabras clave se incluye en los documentos devueltos por la consulta.FULLTEXTSCORE: use esta función en unaORDER BY RANKcláusula para devolver documentos ordenados por su puntuación de texto completo, colocando los documentos más relevantes (puntuación más alta) en la parte superior y el menos relevante (puntuación más baja) en la parte inferior.
Estos son algunos ejemplos de cada función en uso.
FULLTEXTCONTAINS
En este ejemplo, queremos obtener los primeros 10 resultados donde la frase "bicicleta roja" está contenida en la propiedad c.text.
SELECT TOP 10
*
FROM
container c
WHERE
FULLTEXTCONTAINS(c.text, "red bicycle")
FULLTEXTCONTAINSALL
En este ejemplo, queremos obtener los primeros 10 resultados donde las palabras clave "rojo" y "bicicleta" están contenidas en la propiedad c.text, pero no necesariamente juntas.
SELECT TOP 10 *
FROM c
WHERE FULLTEXTCONTAINSALL(c.text, "red", "bicycle")
FULLTEXTCONTAINSANY
En este ejemplo, queremos obtener los primeros 10 resultados donde las palabras clave "rojo" y "bicicleta" o "skateboard" se encuentran en la propiedad c.text.
SELECT TOP 10
*
FROM
container c
WHERE
FULLTEXTCONTAINS(c.text, "red") AND
FULLTEXTCONTAINSANY(c.text, "bicycle", "skateboard")
FULLTEXTSCORE
En este ejemplo, queremos obtener los primeros 10 resultados en los que se incluyen "mountain" y "bicycle" y se ordenan por orden de relevancia. Es decir, los documentos que tienen estos términos con más frecuencia deben aparecer más arriba en la lista.
SELECT TOP 10
*
FROM
container c
ORDER BY RANK
FULLTEXTSCORE(c.text, "bicycle", "mountain")
Importante
FULLTEXTSCORE solo se puede usar en la cláusula ORDER BY RANK y no se proyecta en la declaración SELECT ni en la cláusula WHERE.
Búsqueda aproximada
La búsqueda aproximada puede mejorar la resistencia a errores tipográficos y variaciones de texto. Puede especificar una "distancia" permitida (número de ediciones) entre el término de búsqueda y el texto del documento, lo que permite que las coincidencias cercanas se consideren un acierto. La distancia máxima que se puede especificar es 2 (dos ediciones).
Nota:
La búsqueda aproximada está en versión preliminar anticipada. El rendimiento, la calidad y la funcionalidad están sujetos a cambios en la evolución de la versión preliminar.
SELECT TOP 10
*
FROM
container c
WHERE
FULLTEXTCONTAINS(c.text, {"term": "red", "distance":1}, {"term": "bicycle", "distance":2})