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.
[...] 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 [...]
¿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?