Búsqueda de texto completo

¿Índices secundarios o índices de texto completo?

Las aplicaciones obtienen datos de Couchbase Server de diferentes maneras: pueden utilizar operaciones clave-valor básicas, índices secundarios (vistas) o la búsqueda de texto completo. Como desarrollador, ¿cómo decides si deberías usar índices secundarios o búsqueda de texto completo para la nueva funcionalidad de tu app? Este blog explica las diferencias entre índices secundarios e índices de texto completo para que sepas qué deberías usar para acceder a los datos en Couchbase en función del escenario que tengas entre manos.

Las vistas en el servidor couchbase se definen en javascript utilizando un mapa que extrae datos de sus documentos y una función opcional reducir que agrega los datos emitidos por la función map. En la función map, se puede especificar sobre qué atributos construir el índice. Al final, las vistas se indexan y las consultas son coherentes con respecto a los documentos almacenados. 

Visualmente, así es como se ve una estructura de datos para un índice secundario - 

SecondaryIndex

El uso de una estructura de datos de árbol B para los índices secundarios optimiza las búsquedas rápidas basadas en claves (en este caso, "Nombre del artículo") y las consultas de rango. Por ejemplo, imagina que estás creando una aplicación de catálogo de productos y quieres listar todos los nombres de productos que empiezan por 'A' hasta 'F'. Usando un índice secundario en Couchbase sobre "nombre de artículo", sólo se necesitaría acceder a partes de los nodos de datos del árbol B.  

Entonces, ¿por qué utilizar la capacidad de búsqueda de texto completo de Couchbase?

Imagine que desea listar todos los productos de su tienda que tengan la palabra clave 'rojo' - esto incluye artículos como 'jerseys rojos', 'pantalones rojos' o incluso artículos con el atributo de color 'rojo'. A índice de texto completo asigna términos de documentos a la lista de ID de documentos, lo que permite obtener rápidamente la lista de ID de documentos que contienen un término determinado. 

El servidor Couchbase se integra con Elasticsearch, un motor de búsqueda de texto completo. Usando el adaptador de Couchbase para Elasticsearch, los documentos se replican en tiempo real a Elasticsearch. Elasticsearch analiza cada documento y construye un índice de texto completo para que puedas buscar en todos tus documentos desde tu aplicación.

 InvertedIndex

La figura anterior muestra cómo un índice de texto completo asocia los términos encontrados en los documentos a identificadores de documento. Esta estructura de datos es elegante para realizar búsquedas ad hoc: por ejemplo, si busca "jerséis", obtendrá los identificadores de documento correspondientes a los jerséis rojos y azules.

Ahora que ya sabes qué son los índices secundarios y los índices de texto completo, vamos a ver cuándo deberías utilizar la búsqueda de texto completo y cuándo deberías plantearte utilizar un índice secundario en tu aplicación. 

Debe utilizar búsqueda de texto completo cuando :

–  Si desea buscar en grandes cantidades de datos textuales, como contenido de páginas web, entradas de blog, artículos digitales y metadatos de contenido. Los índices de búsqueda de texto completo le permitirán buscar en todo el conjunto de datos, en cualquier atributo, además de clasificar los resultados por relevancia.

 - su aplicación necesita una búsqueda basada en términos.

Debe utilizar secundario busque en cuando :

 –  tienes consultas en tu aplicación que se ejecutan una y otra vez.
 –  usted sabe exactamente qué atributos consultar en función de su aplicación. Sus consultas pueden ser exactas o de rango. Por ejemplo, desea obtener el número de artículo "1000" o desea una lista de todos los documentos de tipo "pantalones" y tallas comprendidas entre la 5 y la 10. 
Así que, cuando estés construyendo tu próxima aplicación en Couchbase y decidas si usar un índice secundario o un índice de búsqueda de texto completo, intenta aplicar algunas de las directrices anteriores cuando selecciones el mejor índice para tu caso de uso específico. Si estás interesado en aprender más sobre el uso de índices y la búsqueda de texto completo en Couchbase vs. Elasticsearch, inscríbase ahora y no se pierda el próximo seminario web.
¡Feliz codificación!
Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Don Pinto, Director Principal de Producto, Couchbase

Don Pinto es Gerente Principal de Producto en Couchbase y actualmente está enfocado en avanzar las capacidades de Couchbase Server. Es un apasionado de la tecnología de datos, y en el pasado ha escrito varios artículos sobre Couchbase Server, incluyendo blogs técnicos y libros blancos. Antes de unirse a Couchbase, Don pasó varios años en IBM, donde desempeñó el papel de desarrollador de software en el grupo de gestión de la información DB2 y, más recientemente, como director de programa en el equipo de SQL Server en Microsoft. Don tiene un máster en informática y una licenciatura en ingeniería informática por la Universidad de Toronto, Canadá.

2 Comentarios

  1. Michael Rickey marzo 25, 2013 a 4:00 pm

    Este ha sido un gran resumen sobre cómo elegir los métodos de búsqueda. Gracias.

  2. Me gustaría añadir que otra diferenciación clave es:
    - Los resultados de la búsqueda de texto completo suelen estar destinados al consumo humano.
    - Los resultados del Índice secundario están destinados al consumo de máquinas/programas.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.