Busqueda Facetada Drupal Search API Solr
Como configurar busqueda facetada y filtros avanzados en Drupal con Search API y Solr
Imagina una editorial digital que arranco con doscientos articulos. La busqueda nativa de Drupal cumplia. Hoy tienen ocho mil piezas y un equipo comercial que vende suscripciones segmentadas. La caja de busqueda devuelve cualquier cosa menos lo que el lector quiere. El caso se repite en catalogos de productos, bases de conocimiento y directorios sectoriales: superado cierto volumen, la busqueda por defecto se convierte en cuello de botella.
Esa frontera es donde Search API y Apache Solr empiezan a tener sentido. Esta guia recorre la transicion: del momento en que entiendes por que la pila por defecto se queda corta hasta tener filtros por categoria, precio, fecha y taxonomia funcionando con autocompletado.
Por que la busqueda nativa de Drupal se rompe al crecer
Piensa en una asociacion profesional con repositorio de jurisprudencia. Core Search lanza consultas SQL contra la base de datos: con cincuenta sentencias funciona; con cincuenta mil se desploma. Las limitaciones son estructurales:
- Relevancia pobre. El algoritmo de puntuacion ignora sinonimos, no aplica stemming serio y no entiende proximidad de terminos. Buscar "despido improcedente" no encuentra "despidos improcedentes".
- Sin facetas. No hay manera nativa de pintar filtros laterales que acoten por tipo, fecha o cualquier otro campo.
- Rendimiento limitado. Cada busqueda dispara queries pesadas contra MySQL o PostgreSQL. Con miles de nodos, los tiempos de respuesta se van a varios segundos.
- Multiidioma rudimentario. El tratamiento linguistico no diferencia bien entre lenguas y mezcla resultados que deberian ir separados.
Para un proyecto profesional, la solucion pasa por delegar la busqueda a un motor especializado. Ahi entran Search API y Solr.
Que es la busqueda facetada y por que cambia la experiencia
Visualiza una tienda online de material deportivo. El visitante teclea "zapatillas" y, mientras los resultados se cargan, en la columna izquierda aparecen filtros por marca, talla, color, rango de precio y valoracion. Cada filtro muestra cuantos productos quedan si lo activa, y todo se recalcula al vuelo. Eso es busqueda facetada: el usuario refina por atributos del contenido sin escribir mas consultas.
Ese patron reduce la friccion, aumenta el tiempo en pagina y mejora la conversion. En proyectos con contenido complejo, como un directorio de empresas, un catalogo de formacion o una biblioteca documental, las facetas dejan de ser un adorno para convertirse en la columna vertebral de la navegacion.
La pila: Search API mas Solr
Search API es un modulo contrib que aporta una capa de abstraccion sobre cualquier motor de busqueda. No busca por si mismo: define indices, campos y procesadores, y deja la ejecucion al backend.
Apache Solr es un motor de texto completo construido sobre Apache Lucene. Lleva mas de quince años en produccion en proyectos de cualquier tamaño y ofrece facetas nativas, relevancia avanzada, stemming multiidioma y rendimiento solvente con millones de documentos.
El modulo Search API Solr une ambas piezas: traduce las consultas de Search API a peticiones Solr y devuelve los resultados ya digeridos para Drupal.
A esa base se suma Facets, que se enchufa a Search API para generar los bloques de filtros facetados que el usuario ve en pantalla.
Paso a paso: instalacion y configuracion
1. Instalar los modulos necesarios
Desde la raiz del proyecto Drupal:
composer require drupal/search_api drupal/search_api_solr drupal/facets
drush en search_api search_api_solr facets -y
Si quieres autocompletado, suma drupal/search_api_autocomplete.
2. Levantar Solr
Solr puede vivir en la misma maquina o en un servidor dedicado. Pongamos que estas montando el entorno local de un equipo pequeño: con Docker basta una instruccion.
docker run -d -p 8983:8983 --name solr_drupal solr:9
docker exec solr_drupal solr create_core -c drupal
Cuando el contenedor este corriendo, abre http://localhost:8983/solr y confirma que el core existe.
3. Conectar el servidor desde Drupal
Ve a Administracion > Configuracion > Busqueda > Search API y crea un servidor nuevo. Marca "Solr" como backend, introduce la URL (por ejemplo, http://localhost:8983/solr/drupal) y guarda. Drupal intentara conectarse y mostrara el estado en pantalla.
Falta un paso facil de olvidar: el modulo genera ficheros de configuracion especificos de Solr. En la pagina del servidor encontraras un enlace para descargar config.zip. Descomprimelo, vuelca su contenido en el directorio conf del core de Solr y reinicia el servicio. Sin este paso la indexacion funciona, pero la relevancia y el analisis linguistico no aprovechan la mitad de su potencial.
4. Crear un indice de busqueda
En la misma seccion, crea un indice nuevo. Pon un nombre descriptivo, "Catalogo de productos" o "Hemeroteca", y elige las entidades a indexar: nodos, terminos de taxonomia, usuarios o entidades personalizadas.
En la pestaña de campos añade todo lo que vaya a ser buscable o filtrable: titulo, cuerpo, referencias de taxonomia, campos numericos como precio, fechas de publicacion y cualquier campo a medida.
5. Configurar procesadores
Los procesadores transforman el contenido antes de indexarlo. Los mas utiles:
- HTML filter: limpia etiquetas del contenido indexado.
- Tokenizer: divide el texto en tokens.
- Stemmer: reduce las palabras a su raiz para ampliar coberturas.
- Ignore case: normaliza mayusculas y minusculas.
- Transliteration: convierte caracteres especiales a ASCII.
Actiba los que apliquen a tu caso y revisa el orden de ejecucion, porque importa.
6. Indexar el contenido
Pulsa "Indexar ahora" o programa la indexacion por cron. En sitios grandes, la indexacion por lotes evita que el servidor se ahogue.
Construir los filtros facetados
Con el indice ya operativo, toca pintar las facetas. Ve a Administracion > Configuracion > Busqueda > Facets y crea una por cada filtro previsto.
Faceta de categoria (taxonomia). Selecciona el campo de referencia a taxonomia. Elige widget de "Lista de enlaces" o "Checkboxes", segun la estetica que busques. Activa el conteo de resultados junto a cada termino: piensa en una libreria online donde el visitante ve "Novela negra (47)" y decide entrar.
Faceta de rango de precio. Para campos numericos, usa el widget "Lista de rangos" con intervalos tipo 0-50, 50-100, 100-200 y mas de 200. Tambien puedes apoyarte en los rangos automaticos que ofrece Solr.
Faceta de fecha. Elige el campo de fecha y define la granularidad: año, mes o dia. Funciona muy bien en hemerotecas y archivos academicos, donde el lector quiere acotar a un periodo concreto.
Faceta de campo personalizado. Cualquier campo añadido al indice puede convertirse en faceta. Pensar en "region", "nivel de dificultad" o "formato de archivo" suele rendir mas que añadir veinte filtros sin criterio.
Coloca los bloques de facetas en la region lateral del tema mediante el sistema de bloques de Drupal o Layout Builder.
Integrar la busqueda con Views
Search API se entiende de forma nativa con Views. Crea una vista usando tu indice como fuente de datos y desde ahi puedes:
- Decidir el formato de los resultados (tabla, cuadricula, listado).
- Exponer un campo de busqueda como filtro.
- Ordenar por relevancia, fecha, precio o cualquier campo indexado.
- Paginar y crear rutas amigables para SEO.
La vista funciona como pagina principal de busqueda, y las facetas como filtros que recalculan los resultados en tiempo real.
Rendimiento: que mover cuando empieza a notarse
Un buscador solo sirve si responde rapido. En una plataforma de cursos con cien mil unidades didacticas, el usuario abandona si la pagina tarda mas de un segundo. Las palancas habituales:
Configurar bien el indice. No indexes campos que nadie va a buscar ni filtrar. Cada campo extra aumenta el tamaño del indice y ralentiza la indexacion.
Indexacion incremental. En lugar de reprocesar todo el sitio cada vez, configura la indexacion incremental para que solo entren los contenidos modificados desde la ultima vuelta.
Cache de Search API. El modulo permite cachear resultados de consultas frecuentes, lo que descarga a Solr de trabajo repetitivo.
Dimensionar Solr. Por encima de cien mil documentos, asigna al menos 2 GB de memoria heap a la JVM. Vigila los tiempos de respuesta desde el panel de administracion de Solr.
SolrCloud para alta disponibilidad. Si el sitio no puede caerse, SolrCloud reparte el indice entre varios nodos con replicacion automatica.
Autocompletado y sugerencias
El modulo Search API Autocomplete añade sugerencias en vivo mientras el usuario escribe. Se monta sobre la vista de busqueda y usa el indice existente. Puedes definir el numero minimo de caracteres antes de disparar las sugerencias y darle estilo con CSS. En catalogos amplios, el autocompletado reduce errores de tecleo y empuja al visitante hacia terminos que de verdad existen en el indice.
Busqueda multiidioma
Pongamos un grupo industrial con web en español, ingles y aleman. Solr asigna a cada idioma un analizador especifico. El modulo Search API Solr genera la configuracion linguistica para los idiomas habilitados en Drupal: cada traduccion se indexa como documento independiente con su propio analisis. Verifica que Solr esta recibiendo los ficheros schema.xml con los analizadores correctos para cada lengua.
Solr frente a Elasticsearch
Elasticsearch es la otra gran alternativa. Ambos motores se apoyan en Lucene, pero parten de filosofias distintas:
- Solr mantiene una integracion mas madura con Drupal gracias al modulo Search API Solr, que lleva años en desarrollo activo. Configurarlo es mas directo y la documentacion enfocada a Drupal abunda.
- Elasticsearch brilla en analisis de datos en tiempo real y tiene una API JSON mas moderna. El modulo
search_api_elasticsearchexiste, pero su madurez queda por detras.
Para la mayoria de proyectos Drupal, Solr sigue ganando por puntos. Elasticsearch encaja cuando ya forma parte de la infraestructura corporativa o cuando el caso de uso exige analitica avanzada mas alla de la busqueda.
Escenarios donde esta pila demuestra su valor
Catalogo de e-commerce. Una tienda con cinco mil productos y filtros por categoria, marca, precio, talla y color. El comprador acota en dos clics y llega a la ficha que necesita sin teclear de nuevo.
Base de conocimiento corporativa. Miles de documentos repartidos por departamento y tipo. El empleado teclea un termino tecnico, filtra por area y pasa de invertir minutos a invertir segundos.
Directorio profesional. Imagina un colegio profesional con miles de colegiados filtrables por especialidad, provincia e idiomas. Un listado estatico se transforma en un buscador que la gente usa varias veces al mes.
La busqueda como linea divisoria entre util y frustrante
Configurar busqueda facetada con Search API y Solr en Drupal exige inversion inicial, pero la rentabilidad llega rapido. El visitante encuentra, se queda y convierte. Para sitios con contenido abundante, no hay punto medio: o montas una busqueda a la altura, o pierdes audiencia.
Si necesitas apoyo para diseñar e implementar como configurar busqueda facetada y filtros avanzados en Drupal con Search API y Solr en tu proyecto, contacta con nuestro equipo. Llevamos años trabajando con Search API, Solr y arquitecturas de busqueda complejas en Drupal.