Consulta o búsqueda: ¿por qué no ambos?

Publicado el

(16 de octubre de 2020)

Día 2 de asistencia a la evento Couchbase Connect y, como prometí, me sumerjo un poco más en algunas de las actualizaciones de consultas N1QL que afectan la búsqueda de texto completo.

Como comentario al margen, solía trabajo en Couchbase y fui el gerente de producto que lanzó el producto de búsqueda de texto completo, por lo que está cerca de mi corazón incluso ahora. Es por eso que haré mi charla sobre «Búsqueda de texto simplificada» el viernes en el mismo evento. Más sobre eso al final de este artículo.

La búsqueda de texto completo (FTS también conocido como Búsqueda) es un tema en sí mismo, pero todo lo que necesita saber para este artículo es que es un servicio o conjunto separado de capacidades del servicio de consultas N1QL similar a SQL de Couchbase. Al igual que las bases de datos relacionales, N1QL aprovecha un conjunto de índices conocidos como Global Secondary Indexing (GSI).

El servicio de búsqueda de Couchbase tiene su propio conjunto de índices y permite una búsqueda más flexible, con un conocimiento poderoso del idioma, de texto dentro de campos u objetos en documentos JSON.

Binh Les talk Índice flexible: aprovecha la búsqueda con predicado SQL estándar sin limitación de consultas se sumerge en las funciones de N1QL que permiten que una consulta utilice índices GSI o FTS según la necesidad. Esta es una característica nueva y genial y hay dos formas de acceder a ella.

Las diapositivas a continuación son de la charla de Binh; consulte la charla completa para una inmersión mucho más profunda y algunos ejemplos en vivo.

Las aplicaciones pueden optar por utilizar la búsqueda de texto completo o consultas impulsadas por GSI

N1QL con función de predicado de búsqueda

La primera forma de aprovechar un índice FTS desde dentro de una búsqueda N1QL es agregando un SEARCH () predicado a la cláusula WHERE . Esta ilustración muestra las diversas formas de realizar consultas en los servicios de Couchbase, proporcionando un único punto de entrada según el caso de uso.

# 3 en el gráfico anterior muestra la llamada N1QL a la función SEARCH:

DONDE … SEARCH (indexName, texto para buscar )

Esto limitará los resultados a coincidencias entre todos los predicados en la cláusula WHERE y los documentos que tienen una coincidencia para la búsqueda. Utiliza las capacidades de consulta de texto FTS más básicas, pero es intencionalmente simple.

N1QL con Indice Hint

El enfoque alternativo se muestra en la diapositiva de Binh en la parte inferior derecha. Por cierto, esta diapositiva es un excelente resumen de enfoques en otras bases de datos y productos de búsqueda.

En el caso de la sugerencia de índice, una simple declaración en la cláusula FROM es todo que se necesita para aprovechar los índices FTS existentes:

FROM crm USE INDEX (USANDO FTS)

También podría usar explícitamente (USING GSI) pero creo que ese es el valor predeterminado.

Al usar esta pista, el intérprete de consultas N1QL comprobará si las columnas utilizadas en el DONDE (p. Ej., título y tipo ). Si es así, se usarán en lugar de cualquier índice relacionado con GSI, sin que se requiera ninguna otra entrada.

Tenga en cuenta que los campos en SELECT cláusula se extraerá automáticamente de la fuente do comentarios y devuelto al usuario sin tener que realizar una segunda llamada desde su aplicación.

Búsqueda de prefijo con LIKE predicados, rangos de fechas, rangos numéricos y más son compatibles con este enfoque y se convierten en poderosas consultas FTS entre bastidores. Consulte la publicación de blog completa de Binh para obtener más detalles.

¿Cómo usará esto?

El flujo de trabajo es simple: indexe los campos relevantes para la búsqueda de texto, luego agregue la pista a sus consultas existentes. Esto es ideal para la creación de prototipos y pruebas con FTS. Puede agregar una pequeña cláusula a sus consultas y no tener que cambiar las aplicaciones de manera sustancial.

Luego, si se da cuenta de que desea usar la búsqueda de texto en lugar de N1QL, puede tener una idea de cómo sensible será. El objetivo de FTS es ser más rápido y brindarle un conjunto rápido de partidos relevantes y puntuados.

Alternativamente, si ya está utilizando FTS para impulsar sus aplicaciones, puede intentar aprovechar las consultas N1QL en su lugar para no tener que realizar una llamada por separado para recuperar valores de campo de documentos coincidentes.

¿Por qué es importante esto?

Todas las empresas luchan por mantener un conjunto creciente de sistemas cada vez más complejos. Siempre he sido un defensor de un enfoque de sistemas modulares que permite a los diseñadores de sistemas intercambiar diferentes componentes según sea necesario. Sin embargo, eso es realmente ideal durante las fases de prueba y desarrollo. Para la planificación a largo plazo, es muy beneficioso estandarizar un conjunto básico de capacidades y tener una integración lo más estrecha posible.

Couchbase tiene como objetivo ofrecer una plataforma general para todas las necesidades de documentos y valores clave, incluidas las consultas , búsqueda de texto, análisis, eventos, etc. todo en una plataforma distribuida de alto rendimiento. Esto es más que un simple discurso de marketing :). Esta consolidación de capacidades permite a los administradores y desarrolladores convertirse en expertos en una sola plataforma en lugar de tener que aprender varias.

Si pudieras combinar varios componentes del sistema en una experiencia unificada, creo que verías que afectaría tu TCO de formas que no necesariamente esperarías.

Creo que eso es importante y por qué soy optimista en este tipo de integración de N1QL / Búsqueda – ¡Bravo por la simplicidad!

Espero que te unas a mi charla mañana (día 3 del evento) a las 10:00 PDT – Búsqueda de texto simplificada: métodos y arquitectura donde doy una introducción suave a los conceptos de búsqueda de texto completo y lo ayudo a comprender el arquitectura del servicio. Regístrese aquí .

¡Gracias por leer!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *