Búsqueda de texto completo

Cómo crear índices para la búsqueda de texto completo en Couchbase 7.0

Los índices son los que hacen posible la búsqueda de texto completo.

La nueva función Scopes and Collections de Couchbase Server 7.0 hace que la búsqueda de texto completo en tus aplicaciones sea más potente que nunca. Potenciar esas búsquedas requiere índices de texto completo.

Este artículo ofrece una visión general de los Ámbitos y las Colecciones en Couchbase y te guiará a través de la creación de un índice de texto completo a través del nuevo Editor Rápido de Couchbase. También veremos los cambios en el Editor Estándar para acomodar Ámbitos y Colecciones.

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

Full-Text Search (FTS) se refiere a las técnicas de búsqueda de texto dentro de un documento o una colección de documentos. Couchbase soporta la indexación y búsqueda de texto en varios idiomas y proporciona analizadores de texto personalizables interpretar el texto de diversas maneras mediante tokenizadores, filtros, etc.

El paradigma de Colecciones dentro de un bucket Couchbase permite a los usuarios definir índices que pueden suscribirse a múltiples Ámbitos y Colecciones. Pero, ¿qué son exactamente los ámbitos y las colecciones?

¿Qué son los ámbitos y las colecciones?

Un bucket de Couchbase - la base de datos distribuida, particionada y basada en documentos - es el núcleo de Servidor Couchbase. Con la versión 7.0puede categorizar documentos configurando cubos para formar una jerarquía organizativa. Cada categoría se mantiene dentro de un subcubo (que también está particionado); ese subcubo es un Colección. Cada cubo se gestiona ahora mediante una jerarquía de tres niveles, como puede verse en la imagen siguiente.

A continuación se muestra un ejemplo de cubo y su categorización con Ámbitos y Colecciones para el menú de un restaurante. (Para más contexto de la relación entre Ámbitos y Colecciones, lea esto introducción a los ámbitos y las colecciones.)

Restaurant menu to illustrate Scopes and Collections in Couchbase 7.0

Para esta jerarquía de cubos, puede definir un índice de búsqueda de texto completo para suscribirse e indexar datos como:

    • El contenido de todos los tacos vegetarianos dentro del alimentos Alcance del menú
    • Las carnes utilizadas en todas las hamburguesas del alimentos Alcance del menú
    • Los tipos de cócteles y bebidas de café dentro de la beber Alcance del menú

Ya te haces una idea.

Nota: Puede definir un índice de texto completo para suscribirse a varias colecciones, pero todas esas colecciones deben pertenecer a un único ámbito. Una definición de índice no puede trascender un Ámbito.

Hablemos de definiciones de índices

La siguiente captura de pantalla muestra cómo añadir un índice en el editor estándar de Couchbase (como se veía en Couchbase Server 6.6).

Couchbase full-text search index in version 6.6

En la captura de pantalla anterior, pretendo indexar todo el contenido de los documentos JSON del bucket muestra de cerveza que tiene un campo tipo cuyo valor es cerveza. Observe la vista previa de la definición del índice en la parte derecha de la pantalla, que contiene todos los ajustes del índice. cervezas. Esta vista previa se adapta inmediatamente a cualquier cambio que hagamos en la configuración.

Como puede ver, hay muchos ajustes en la definición del índice. Y Servidor Couchbase 7.0 incluye aún más variaciones para dar soporte a las Colecciones, lo que puede resultar desalentador, sobre todo para los nuevos usuarios.

Por eso hemos introducido el Editor Rápido para definir índices. Con él, los nuevos usuarios (o cualquiera que no quiera profundizar en configuraciones avanzadas para sus índices de búsqueda de texto completo) pueden empezar a usar el Servicio de Búsqueda de Couchbase. Antes de sumergirnos en el Editor Rápido en detalle, veamos cómo 7.0 ha actualizado la definición de un índice de texto completo para acomodar Colecciones. Siéntete libre de saltar directamente a la discusión del Editor Rápido si lo prefiere.

Cómo actualiza Couchbase Server 7.0 las definiciones de índices de texto completo

Vamos a repasar rápidamente las actualizaciones a la definición de un índice de texto completo en Couchbase 7.0 para acomodar Scopes y Collections. Ten en cuenta que Couchbase seguirá soportando definiciones de índices antiguas de versiones anteriores de Couchbase Server.

Sigamos con el ejemplo que he utilizado antes: el cervezas en el bucket Couchbase muestra de cerveza. Eliminando los ajustes por defecto y manteniendo sólo los ajustes relevantes, he aquí una definición mínima del índice:

En términos 7.0, todo ese contenido en el cubo cervezas-muestra reside en el Por defecto Colección del Por defecto Scope, lo que significa que al actualizar Couchbase a la versión 7.0, los datos de su bucket pasan a la versión Por defecto Colección dentro del Por defecto Alcance.

La definición de índice anterior funciona con 7.0. Sin embargo, aquí tienes una alternativa: una definición de índice 7.0 que hace exactamente lo mismo que la anterior.

Observe las tres diferencias entre las dos definiciones anteriores:

    • sourceType ha pasado de couchbase a gocbcore. Hemos cambiado el SDK subyacente que utiliza el índice de texto completo para comunicarse con un bucket de Couchbase por uno más nuevo y mejor soportado.
    • params.doc_config.mode ha pasado de campo_tipo a campo_tipo.scope.collectionindicando que los nombres de las asignaciones de tipos siguen ahora ese formato.
    • En nombre de la asignación de tipos se ha convertido en cervezalo que indica que indexa documentos de tipo:cerveza desde el interior del Por defecto Colección en el Por defecto Alcance del cubo muestra de cerveza.

Las colecciones le ayudan a modelar mejor sus datos

Modelar sus datos en una única Colección (imitando el comportamiento pre-7.0) significa que todos los datos dentro del cubo son enviados y el índice debe filtrar los documentos basándose en la definición.

Con Ámbitos y Colecciones, puede modelar sus datos en categorías, cada una de las cuales reside en una Colección independiente. Voy a destacar una ventaja obvia con este enfoque en el siguiente ejemplo.

En muestra de cerveza contiene documentos de tipo cerveza y cervecería todos ellos residentes en el Por defecto Colección del Por defecto Alcance. Cambiemos este modelo:

  1. Establecer un ámbito de aplicación contenido en muestra de cerveza.
  2. Dentro del Ámbito, establezca dos Colecciones: cervezas y cervecerías.
  3. Datos de carga de tipo:cerveza en cervezas y los datos de tipo:cervecería en cervecerías.

He aquí una definición de índice para contener los mismos datos que los anteriores: ...

En esta ocasión, el cubo envía documentos de sólo tipo:cerveza. Así que con la última definición de índice, tus nodos de búsqueda serían:

    • Consume menos ancho de banda de red
    • Benefíciese de tiempos de creación de índices más rápidos

Mira esto para obtener más información sobre los matices de las definiciones de los índices de texto completo. con Couchbase bucket Collections.

Presentación del editor rápido

Aquí tienes un vistazo al nuevo Editor Rápido:

Quick Index Editor in Couchbase Server

Introducing the Quick Editor in Couchbase Server 7.0

Al seleccionar un cubo, un ámbito y una colección en los campos del espacio clave que se muestran en la captura de pantalla, aparece un documento de muestra en la sección Seleccionar campos; pertenece a la categoría bucket.scope.collection seleccionados. Un botón de actualización en la esquina superior derecha de la sección Seleccionar campos le permite iterar a través de los documentos (al azar) dentro de la Colección.

A sample JSON document in Couchbase

Ahora puede seleccionar un campo del documento (haciendo clic en el nombre/valor del campo). El campo seleccionado se muestra para su configuración en la sección Configurar campos. El tipo de campo se detecta automáticamente (actualmente sólo texto, número y Booleano se reconocen). Si el campo fuera datetime (cadena en ISO-8601 ) o un geopunto (un objeto, una matriz o un geohash), deberá seleccionar explícitamente el tipo en el desplegable Tipo.

Configure field in Couchbase index editor

Cuando el campo configurado es Añadir-aparece en la sección Campos asignados, como puede ver a continuación. Puede editar un campo asignado en cualquier momento seleccionándolo de nuevo en la sección Seleccionar campos o en la sección Campos asignados.

Mapped field in Couchbase index editor

El botón Crear índice, situado en la parte inferior de la página, le permite crear el índice.

Estos son los ajustes disponibles para configurar un campo:

    • Tipo es el tipo del valor del campo. Los tipos admitidos son texto, número, booleano, geopunto y fecha-hora, como se ha detallado anteriormente.
    • Indexar este campo como identificador sólo aparece si el tipo de campo elegido es texto. Si se selecciona, se activará el analizador de palabras clave para el texto.
    • En Idioma está disponible si el tipo de campo es texto y el campo no se indexa como identificador. En el desplegable Idioma puede elegir el analizador para el campo de texto.
    • Las siguientes cuatro casillas de verificación se traducen esencialmente en una única opción o una combinación de opciones (como en el Editor estándar) admitidas para un campo:

Options table in Couchbase Server 7.0 full-text index editor

Puede aquí encontrará más documentación sobre estas opciones.

    • La última sección es para configurar Buscar comoque toma una entrada de texto que sirve como alias para el campo. Esta configuración es opcional y por defecto es el nombre del campo seleccionado. Durante la búsqueda, la entrada de esta sección es el campo en el que hay que buscar.

Puede editar una configuración de índice desde el Editor Rápido en cualquier momento utilizando el Editor Rápido o el Editor Estándar.

Opciones limitadas en el editor rápido

    • Como se ha indicado anteriormente, para simplificar, el Editor Rápido ofrece opciones limitadas para configurar las definiciones de índice.
    • No puede indexar un campo que no esté disponible en el documento de muestra cargado en la sección Seleccionar campos.
    • No se admiten analizadores personalizados.
    • Geopoint y Fecha y hora no se reconocen automáticamente. Sin embargo, puede establecer explícitamente el tipo de campo al seleccionarlo.
    • No puede utilizar el Editor rápido para editar un índice creado con el Editor estándar. Sin embargo, puede utilizar el Editor estándar para editar un índice creado con el Editor rápido.
    • Aunque puede configurar campos desde dentro de varias colecciones, no puede indexar el mismo campo varias veces dentro de una misma colección.
    • El Editor rápido no permite filtrar documentos dentro de un archivo ámbito.colección (para indexar únicamente documentos de un determinado tipo).
    • No puede establecer réplicas de índice, tipo de índice o particiones de índice en el Editor Rápido. Asumirán los valores por defecto cuando cree un índice. Sin embargo, puede cambiar estas configuraciones utilizando el Editor Estándar y posteriormente editar la definición del índice utilizando el Editor Rápido siempre y cuando el params.mapping y params.doc_config de la definición del índice no se modifican en el Editor estándar*.

*Este comportamiento puede cambiar a medida que ampliemos la compatibilidad con el Editor rápido.

Cambios en el editor estándar

Lo primero que puede notar que es diferente es una nueva casilla de verificación debajo de las entradas Nombre del índice y Cubo, que le pregunta si desea configurar el índice para que se suscriba a un Ámbito no predeterminado o a una Colección no predeterminada:

Add a full-text search index in Couchbase Server

Activación de los prefijos de casilla ámbito.colección a la params.doc_config.mode dentro de la definición del índice, lo que implica que el índice puede suscribirse a una o más Colecciones desde dentro de un Ámbito. Este ámbito.colección prefijo funciona en combinación con los ajustes existentes campo_tipo, docid_prefix y docid_regexp para filtrar los documentos a indexar.

Si comprueba el Utilizar ámbito/colección(es) no predeterminados aparece un menú desplegable. Allí puede seleccionar un Ámbito de entre los Ámbitos disponibles para el cubo que ha elegido:

Select a Scope in Couchbase full-text index editor

Ahora, dentro de los mapeos de tipos, se le pedirá que seleccione una Colección de un desplegable. (Tenga en cuenta que la asignación de tipos predeterminada debe estar desmarcada si elige una selección de Ámbito no predeterminada, porque una definición de índice no puede trascender un Ámbito).

How to select a Collection in Couchbase Web Console

Una vez seleccionada una colección, tiene la opción de añadir un nombre de tipo al campo . en función del identificador de tipo que haya seleccionado para filtrar los documentos a indexar dentro de la colección. Puede editar esta asignación de tipos en cualquier momento. Al igual que antes, puede añadir sub-asignaciones y campos hijo dentro de la asignación de tipos.

Edit a document type mapping for a Couchbase full-text index

El resto de las funciones del editor estándar permanecen inalteradas.

Búsqueda en un índice de textos completos basado en colecciones

La interfaz de usuario para buscar en un índice de búsqueda de texto completo no ha cambiado. El cuadro de texto sólo admite una cadena de consulta. Véase esta página de documentación sobre otros tipos de consultas que admite el índice de texto completo.

Las solicitudes de búsqueda que se dirigen directamente al punto final tienen ahora un nuevo argumento (opcional) para obtener únicamente resultados de una colección o un conjunto de colecciones a las que esté suscrito el índice de texto completo.

He aquí un ejemplo de solicitud de búsqueda:

En la consola web de Couchbasesin embargo, no se puede establecer el colecciones para una petición de búsqueda; la petición abarcará todo el contenido indexado de todos Colecciones a las que se suscribe el índice.

Veamos un ejemplo de definición de índice creada con el Editor rápido. Este índice está suscrito a las colecciones cerveza y cervecería en el ámbito de aplicación contenido del cubo por defecto. Dentro de estas dos colecciones, los campos de nombre se indexan con las siguientes opciones:

    • Incluir en los resultados de búsqueda
    • Apoyo al resaltado

Aquí está el contenido relevante de la definición del índice:

En los casos en que la definición del índice se suscribe a más de una colección (como en el ejemplo anterior) para una búsqueda, la colección a la que pertenece el documento aparece como un campo almacenado con la clave $c.

A continuación se muestra un fragmento de resultados de búsqueda para la definición de índice de búsqueda de texto completo anterior:

Full-text search results in Couchbase Web Console

Más información sobre Couchbase 7.0

¿Listo para profundizar en Couchbase 7.0 y todas sus características? Echa un vistazo a estos recursos:

¿Listo para probar los ámbitos y las colecciones?Descargue Couchbase Server 7.0 hoy mismo

 

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Abhinav Dangeti, Ingeniero de Software

Trabajar en la búsqueda distribuida de texto completo de Couchbase

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.