Es inevitable: Si estás trabajando con una base de datos de documentos, eventualmente vas a necesitar buscar (y a través de) tus documentos JSON.

En este tutorial, añadirás las capacidades de búsqueda de texto completo de Couchbase a la API REST básica construida con Express que hemos estado construyendo a lo largo de esta serie de Node.js.

La entrada anterior de esta serie utilizó Express para construir una API básica para crear consultas N1QL.

El post de hoy te lleva un paso más allá. Aprenderás a encontrar documentos JSON que contengan el texto que buscas añadiendo una funcionalidad a tu aplicación que utilice el método Couchbase Buscar API. Empecemos.

¿Qué es la búsqueda de texto completo?

Búsqueda de texto completo (FTS) es un nombre extraño, pero es un concepto bien desarrollado en áreas académicas centradas en el análisis de grandes piezas de contenido de texto. En el ámbito de las bases de datos, lo llamamos simplemente "búsqueda" para abreviar, y se centra en encontrar texto dentro de documentos JSON.

Los desarrolladores de aplicaciones utilizan herramientas relacionadas con la búsqueda para encontrar coincidencias sin tener que escribir consultas SQL que normalmente requieren saber cómo/dónde encontrar los datos de interés. En un escenario de búsqueda de texto completo se busca texto con más sofisticación.

Por ejemplo, los sistemas de búsqueda comprenden las palabras raíz mediante un concepto conocido como stemming, por lo que no es necesario buscar manualmente muchas permutaciones de un término. Del mismo modo, los comodines, prefijos y emparejamiento difuso son posibles con sistemas de búsqueda robustos.

Creación de índices de búsqueda

La utilización de un sistema de búsqueda consta de dos pasos: (1) indexar/analizar el texto de cada documento y (2) solicitar una lista de documentos que contengan coincidencias basadas en el texto.

La fase de indexación es similar a la creación de índices secundarios para datos relacionales/tabulares, en la que se describen los campos o elementos que se van a indexar y el sistema los rastrea por ti. También puedes pedirle al sistema que indexe todos los campos de texto del documento, aunque para grandes conjuntos de datos esto puede no ser eficiente en producción.

La fase de consulta (es decir, la búsqueda) envía un texto al servidor para que éste lo busque. El sistema compara ese texto con los índices y devuelve una lista de documentos con coincidencias.

La búsqueda de texto completo es sencilla, pero hay un conjunto infinito de opciones y preguntas a tener en cuenta, como:

    • Cómo manejar frases y números
    • Identificar en qué parte de un documento se encuentra un texto determinado
    • Análisis de textos en varios idiomas

En realidad, este es un tema que merece ser tratado en profundidad. Los patrones simples utilizados en este post se pueden ampliar a todos los diferentes escenarios de búsqueda como se describe en esta introducción a la búsqueda de texto completo.

Preparación de su instancia de Couchbase

Si eres nuevo en esta serie de tutoriales de codificación de JavaScript, debes instalar la aplicación viaje-muestra cubo de datos, como se describe en el Documentación de Couchbase.

El script utilizado en el post anterior de esta serie también se va a utilizar como punto de partida para el post de hoy. El código Node.js está incluido en el final de ese post.

A medida que avanzas en estos tutoriales de Node.js vas construyendo una aplicación REST API más compleja y útil. Vamos a sumergirnos en la creación del índice de búsqueda necesario para apoyar el siguiente paso de tu proyecto.

Crear un índice de búsqueda de texto básico

Para crear un índice de búsqueda, seleccione la opción Buscar en en la pestaña Consola web de Couchbase y pulse la tecla Añadir índice botón.

A continuación, introduzca el nombre que desea dar al índice y elija qué Cubo analizar (viaje-muestra). Finalice pulsando la tecla Crear índice para enviar sus opciones. Hay muchas opciones diferentes para elegir, pero en el ejemplo de hoy, mantenemos todos los valores predeterminados para simplificar. La siguiente animación muestra cada uno de estos pasos:

Process to create a search index using Couchbase Web Console

Después de completar estos pasos, debería ver sus índices de búsqueda y su estado en la Consola Web. También debería poder ver cuántos documentos se han procesado.

Indexación en el viaje-muestra data Bucket tarda unos minutos, pero una vez completado, puede realizar una solicitud de búsqueda de muestra a través de la interfaz de usuario web básica, como se muestra a continuación.

Entering a full-text search query on an index in the Couchbase Web Console

Introduzca un término sencillo en el cuadro de búsqueda y aparecerá una lista con los ID de los documentos coincidentes, con las coincidencias más destacadas en la parte superior. La Consola Web permite hacer clic fácilmente en estos ID para ver el texto completo del documento.

Creación de una función de búsqueda de texto simple

Hay muchas opciones adicionales para afinar las búsquedas con operaciones booleanas, coincidencias difusas, etc. La Consola Web sólo realiza una simple cadena de consulta y este es el mismo tipo que implementarás en tu código.

Para crear la nueva función de búsqueda de texto completo es necesario:

  1. Proporcione una cadena para buscar (por ejemplo, "grand").
  2. Especifica el índice de búsqueda a utilizar: travelsearch.
  3. Declara el tipo de consulta a utilizar: queryString.
  4. Ensamble todas las piezas y envíelas al servidor.
  5. Recibir los resultados y mostrarlos al usuario/aplicación.

Estas cinco líneas de código JavaScript que aparecen a continuación son un ejemplo de cómo establecer estas variables, agruparlas, pasarlas al clúster e imprimir los resultados en la consola:

Si desea ajustar el tipo de consulta de búsqueda, cambie queryString en la tercera línea con otro método. En la sección Documentación de Couchbase Full-Text Search.

Por ejemplo, una consulta de intervalo de fechas tiene el siguiente aspecto:

const dateQuery = couchbase.SearchQuery.dateRange().start(startDate).end(endDate)

A continuación se muestra un ejemplo completo de script independiente que incluye la lógica básica. Lo incorporamos al ejemplo de API REST Express en la siguiente sección.

Profundizar en el Código

Siguiendo con nuestro ejemplo, ahora puedes añadirlo al código de la API REST que hemos creado en tutorial de la semana pasada.

Añade el código junto con la nueva ruta Express para poder enviar una petición de búsqueda desde una URL en el navegador. En este caso, la ruta será: /buscar/[término de búsqueda] - Por ejemplo /búsqueda/grande.

He aquí la definición de la ruta para construir la consulta de búsqueda de texto completo:

Haga clic a continuación para ver el código completo de la API REST, incluidas las rutas de obtención de documentos, consulta N1QL y búsqueda:

Ejecución de la API REST de consulta de búsqueda

Acceda a la aplicación a través del navegador web en el puerto 3000 y con la ruta de búsqueda: http://localhost:3000/search/grand.

Los resultados de la búsqueda se muestran aquí e incluyen una lista de ID de documentos coincidentes y la puntuación de clasificación de la coincidencia:

Tenga en cuenta que los resultados de la búsqueda también incluyen algunos metadatos útiles que muestran el número total de aciertos/parejas, el tiempo de ejecución y mucho más.

Conclusión

Las posibilidades de uso de Couchbase en aplicaciones basadas en búsquedas son infinitas.

Con todos los diferentes tipos de consultas y otras opciones de búsqueda disponibles, aún queda mucho por aprender. Aquí tienes algunos puntos de partida:

Con esto terminamos esta serie sobre desarrollo con Node.js y Couchbase. ¡Buena suerte en tu viaje continuo con JavaScript!

Póngase al día con el resto de la serie Node.js + Couchbase how-to:

 

Es hora de que lo pruebes por ti mismo:
Descargue Couchbase 7 hoy mismo

 

Autor

Publicado por Tyler Mitchell - Director de Marketing de Producto

Trabaja como Gerente Senior de Marketing de Producto en Couchbase, ayudando a llevar el conocimiento sobre los productos a la luz pública, mientras que también apoya a nuestros equipos de campo con contenido valioso. Su pasión personal es todo lo geoespacial, habiendo trabajado en GIS durante la mitad de su carrera. Ahora la IA y la búsqueda vectorial son lo primero en lo que piensa.

Dejar una respuesta