B煤squeda de texto completo en Couchbase 4.5 Developer Preview

Una de mis nuevas caracter铆sticas favoritas de Couchbase Server 4.5 es Full Text Search, o FTS. El a帽o pasado se lanz贸 como una Developer Preview independiente, y ahora puedes probar una nueva Developer Preview totalmente integrada con Couchbase 4.5. C茅cile ya escribi贸 un entrada del blog sobre el uso de FTS en una aplicaci贸n de gesti贸n de contenidos respaldada por Couchbase; aqu铆 quiero darte una introducci贸n al conjunto de caracter铆sticas.

驴Qu茅 es el texto completo y por qu茅 deber铆a importarme?

El texto completo le permite buscar y encontrar lo que busca incluso sin coincidencias exactas. Al igual que el聽COMO en SQL? Pues no. Es otra cosa. COMO permiten el uso de comodines, que es bastante diferente. Tomemos el siguiente ejemplo:

Couchbase es incre铆ble

Si su consulta contiene "campo LIKE '%esAsombroso%'", coincidir谩. Si contiene "LIKE '1TP3Es incre铆ble%'", no lo har谩 porque COMO distingue entre may煤sculas y min煤sculas. Algunos lenguajes SQL admiten la funci贸n ILIKE que no distingue entre may煤sculas y min煤sculas. Actualmente no est谩 soportado por N1QL pero se puede utilizar el m茅todo TOLOWERCASE y obtendr谩 el mismo efecto. Tampoco coincidir谩 si cometes un error tipogr谩fico como "LIKE '%esom%'". As铆 que COMO le permite hacer coincidir una parte exacta de un campo.

Fulltext hace mucho m谩s. Coincidir谩 con 'couchbase awesom'. Esto significa que no distingue entre may煤sculas y min煤sculas, que puede ignorar palabras sin importancia como "es" (el t茅rmino t茅cnico es "stop word") y que es tolerante con errores como las erratas.

驴Eso es todo? No, d茅jame lanzar la lista obligatoria de caracter铆sticas de la nueva versi贸n:

  • An谩lisis de texto con varios analizadores predefinidos: Alem谩n, dan茅s, espa帽ol, fin茅s, franc茅s, h煤ngaro, ingl茅s, italiano, neerland茅s, noruego, persa, portugu茅s, rumano, ruso, soran铆, sueco, tailand茅s y turco.
  • Diferentes tipos de consulta
    • T茅rmino, frase, coincidencia, frase coincidente, prefijo
    • Conjunci贸n, disyunci贸n, booleana
    • Rangos num茅ricos y de fechas
    • Cadena de consulta (una sintaxis de consulta pr谩ctica para llamar a la mayor铆a de los tipos enumerados anteriormente, como "ale -hoppy +sweet")
  • Puntuaci贸n (tf-idf)
  • Campos almacenados, resaltado de resultados y fragmentos de resultados
  • Facetado: Facet de t茅rminos, Facet de rango num茅rico, Facet de rango de fechas

Todas estas caracter铆sticas est谩n respaldadas por Bleve. Es un proyecto de indexaci贸n y b煤squeda de texto completo de c贸digo abierto escrito en Go e iniciado por los ingenieros de Couchbase. Couchbase FTS es la integraci贸n de Bleve en un cl煤ster Couchbase.

驴Qu茅 se puede hacer con la b煤squeda de texto completo?

驴Sabes esa lupa que ves en todas las p谩ginas web y que pones en todos los esquemas sin pens谩rtelo dos veces? Suele ser la b煤squeda a texto completo. Google ha puesto las expectativas de los usuarios al nivel del texto completo. Quiere poder ejecutar b煤squedas facetadas o mostrar un resultado de b煤squeda en contexto. Y si lo pensamos bien, podemos decir lo mismo de todos los sitios web de gran 茅xito, como Spotify, Netflix u otros campeones de la econom铆a digital.

Pens茅 que podr铆a usar ElasticSearch o SOLR para Fulltext...

Respuesta corta: s铆, puedes. Hay conectores de Couchbase Server para ambos. Ahora mismo Couchbase FTS est谩 todav铆a en fase de desarrollo y no ha anunciado una fecha de AG, as铆 que no deber铆as reemplazar nada todav铆a. A largo plazo, esos productos podr铆an tener caracter铆sticas que necesitas y que FTS no tiene. Couchbase FTS no ser谩 la bala de plata si la b煤squeda de texto completo es el n煤cleo de tu negocio. Sin embargo, para muchos casos de uso de b煤squeda, Couchbase FTS ser谩 suficiente para que no tengas que desplegar otra herramienta, en otra caja, mantenerla sincronizada, monitorizarla, asegurarte de que el conector funciona bien, gestionarla, etc茅tera.

Integraci贸n con Couchbase

Couchbase FTS es la integraci贸n de Bleve con Couchbase Server. Nos permite crear un 铆ndice de texto completo basado en el contenido de los documentos JSON almacenados en Couchbase. Un 铆ndice normal es una lista de documentos y las palabras que contienen (t茅cnicamente se almacenan t茅rminos, no palabras, pero aqu铆 estamos entre amigos). Un 铆ndice de texto completo es un tipo de 铆ndice invertido: te dice, para una palabra dada, una lista de todos los documentos donde aparece esa palabra.

A continuaci贸n le explicamos c贸mo utilizar FTS para crear sus propios 铆ndices de texto completo.

Comenzando en Couchbase 4.5, todos los 铆ndices han sido reagrupados bajo la pesta帽a 脥ndice (que est谩 convenientemente ubicada al lado de la pesta帽a Consulta, envi谩ndote a nuestro nuevo y genial banco de trabajo de consultas). En la pesta帽a 脥ndice encontrar谩s 脥ndices Globales usados por N1QL, Vistas y Texto Completo.

La pantalla est谩 dividida en tres partes. La primera le permite ejecutar consultas de texto completo, la segunda le permite definir 铆ndices de texto completo y la tercera le permite definir alias de 铆ndices de texto completo (u otros alias de 铆ndices). 驴Por qu茅 necesitas un alias para tu 铆ndice? A帽ade un nivel de indirecci贸n que es 煤til para tu aplicaci贸n. La mayor铆a de las veces, cuando se trabaja con 铆ndices de texto completo, se dedica tiempo a modificarlos para obtener los resultados deseados. Tal vez crees un 铆ndice, lo utilices durante un tiempo, veas c贸mo funciona, pruebes otro 铆ndice con una configuraci贸n ligeramente diferente, tal vez elimines algunos documentos basura, etc. Si utilizas un alias, no tienes que cambiar el nombre del 铆ndice cada vez en tu aplicaci贸n. En su lugar, s贸lo tienes que cambiar a qu茅 铆ndice apunta tu alias. Ambos 铆ndices est谩n funcionando todo el tiempo, y s贸lo tienes que cambiar de uno a otro.

Para empezar, necesitas crear un 铆ndice. Voy a crear uno sencillo llamado "beer-ft".

Una vez creado el 铆ndice, vuelva a la pesta帽a Texto completo. Ahora puede seleccionar el 铆ndice y ejecutar una consulta de texto completo. Obtendr谩 todos los documentos que contengan la palabra "ale" en cualquiera de sus campos. Puede restringir la b煤squeda a un campo espec铆fico. Por ejemplo, si desea saber qu茅 documentos contienen "ale" en el campo nombre, puede escribir "nombre:ale".

Si quiere saber qu茅 cervezas son m谩s ligeras, puede utilizar "light ale" como cadena de consulta. En realidad, obtendr谩 la lista de documentos que contienen ale y light. Si utiliza '"light ale"' entre comillas, obtendr谩 la lista de documentos que contienen "light ale".

Hay otras formas de afinar su consulta, eche un vistazo a Documentaci贸n de Bleve aqu铆. Los 铆ndices tambi茅n disponen de funcionalidades m谩s avanzadas como el filtrado de tipos, la asignaci贸n de campos personalizados, la asignaci贸n de hijos para estructuras incrustadas/anidadas, el analizador personalizado y mucho m谩s.

PREGUNTAS FRECUENTES

驴Ser谩 FTS GA con Couchbase Server 4.5?

No. FTS se enviar谩 integrado con Couchbase Server 4.5 GA, pero FTS no estar谩 soportado para su uso en producci贸n.

驴Habr谩 diferencias entre DeveloperPreview y 4.5 GA?

Habr谩 algunas diferencias entre las dos versiones. Estamos trabajando duro en el rendimiento y el soporte de m煤ltiples nodos. Ahora mismo s贸lo se puede ejecutar Couchbase FTS en un nodo de un cluster. Obviamente, es importante que FTS sea resistente y capaz de manejar cambios de topolog铆a, failovers y eventos de rebalanceo. Adem谩s, es casi seguro que las APIs cambien en algunos peque帽os aspectos.

驴Cu谩l es la mejor manera de probar Couchbase FTS?

El conjunto de datos de la muestra de cerveza que viene con Couchbase Server funciona bien. Aqu铆 se aplica la regla general de que las versiones preliminares de Couchbase para desarrolladores no est谩n ajustadas al rendimiento: es una oportunidad para probar la funcionalidad y la API, pero si la ejecutas con grandes cantidades de datos puedes encontrar problemas. Si decides usar tu propio conjunto de datos, te recomendamos mantener un tama帽o modesto, por ejemplo 10.000 documentos o menos.

驴Siguen dando soporte a los conectores Elasticsearch y SOLR?

Por supuesto. No cubriremos todo lo que Elasticsearch o SOLR pueden aportarte. Estos conectores se mantendr谩n.

驴Hay alg煤n plan de integraci贸n de N1QL?

S铆, aunque primero tenemos que llegar a la calidad GA.

驴Y una integraci贸n con Kibana?

Cuando la gente oye hablar de Fulltext estos d铆as piensan en Elastic y especialmente en su poderoso dashboard Kibana. Dicho esto, no tenemos ning煤n plan para construir una integraci贸n. Por otra parte, es software de c贸digo abierto, as铆 que tal vez alguien nos sorprenda...

隆Vale, vamos!

Visite la p谩gina P谩gina de descargas de Couchbase y prueba FTS - junto con todas las otras nuevas caracter铆sticas de Couchbase Server 4.5 DP. H谩ganos saber lo que piensa, queremos saber de usted.

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

Autor

Publicado por Laurent Doguin

Laurent es un metalero empoll贸n que vive en Par铆s. Principalmente escribe c贸digo en Java y texto estructurado en AsciiDoc, y a menudo habla sobre datos, programaci贸n reactiva y otras cosas de moda. Tambi茅n fue Developer Advocate de Clever Cloud y Nuxeo, donde dedic贸 su tiempo y experiencia a ayudar a esas comunidades a crecer y fortalecerse. Ahora dirige las relaciones con los desarrolladores en Couchbase.

2 Comentarios

  1. [...] en l铆nea. Para obtener una idea general sobre el servicio de b煤squeda de texto completo Couchbase, consulte la siguiente entrada del blog para [...]

  2. 驴Pueden los 铆ndices creados para la b煤squeda de texto completo causar problemas de rendimiento en Couchbase? 驴Por rendimiento me refiero a la extracci贸n de documentos por cualquier aplicaci贸n?

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.