Configura un buscador básico y avanzando (Search API) con Drupal
Ha día de hoy (Junio de 2024) tengo publicadas unas 20 entradas y me estoy dando cuenta que no tengo un buscador!! Ayer estaba intentando encontrar un post donde explicaba como actualizar las claves de GPG de los repositorios y al final he tenido que entrar en el panel de gestión y buscar la entrada (un desastre!)
Por eso hoy voy a implementar un buscador muy muy sencillo y os documentaré los pasos par que tengáis una idea! Lo primero que debes tener en cuenta es la dimensión de tu sitio web y la finalidad del buscador:
- Si simplemente quieres un buscador genérico y básico, puedes usar el módulo Search del propio core de Drupal
- Si en tu proyecto web tienes mucho contenido (pongamos que tienes más de 1000 nodos) o quieres realizar búsuquedas por varios campos, te recomendaría que te usaras índices de búsqueda usando el módulo SearchAPI
- Si lo que quieres hacer son búsquedas por texto más potentes (indexado relacional, ngrams, etc..) o tienes mucho más contenido (más de 5000 nodos), te diría que fueras directamente a tecnologías como Solr usando el módulo SearchAPISolr
En mi caso, usaré el Search API ya que creo que seguiré subiendo cositas y quiero tener un buscador bastante potente que me pueda durar mucho tiempo! :D
Configurando el buscador con Search API
Los pasos son muy muy sencillos (cuando ya te adentras en el mundo de Drupal...) y básicametne se resumen en:
- Instala el módulo
- Configurar tu acceso a DDBB y los índices que quieras
- Configurar los campos a indexar
- Configura el formulario de búsqueda y la visualización de resultados
Vamos a ir parte por parte y explicando cada punto con más detalle ya que en algún caso la configuración la tienes que hacer muy atento para no tener que volver a empezar!
- Instala el módulo: este es el paso más sencillo! Descarga el módulo SearchAPI e instálalo en tu sitio. Un dato importante aquí, des-instala el módulo Search del core para evitar conflictos
- Configurar acceso a DDBB e índices de búsqueda:
La primera parte es muy sencilla ya que simplemente desde el panel de configuración debemos añadir una conexión nueva a nuestra base de datos
- La segunda, la creación del índice también es sencilla pero con más pasos. Dentro de una misma conexión de base de datos, podemos crear varios índices de búsqueda. Cada índice se puede configurar de forma diferente. Esto lo bueno que tiene es que, podemos tener varios buscadores con diferentes comportamientos e incluso podemos usar los índices para crear nuevas vistas y bloques ya que SearchAPI está 100% integrado con las vistas de Drupal
- Configurar campos para indexar: después de crear nuestro índice, tenemos que añadir todos los campos de los contenidos que queremos tratar/buscar/indexar. En este paso tienes que estar atento. Cada cambio que hagas en la configuración de los campos implicará volver a indexar todo el contenido y si tienes muchos nodos.... pues es tiempo de computación y carga del sistema! Os dejo una captura de mi configuración actual
- Guarda los cambios y ejecuta el proceso de indexación para tener acceso a los nodos.
- Configura la vista y formulario de búsqueda: ahora ya tenemos nuestro índice configurado y preparado por lo que tenemos que montar la vista para mostrar esa información. En mi caso lo que quiero es un formulario de texto que, a l buscar, me lleve a una página con los resultados:
Vamos a las vistas y añadimos una nueva vista de tipo "Índice de contenido"
En la configuración de la vista, la preparáis como vosotros queráis (campos que queréis mostrar, nombre, url, filtros, ordenación, etc...). Lo importante/relevante aquí es que tenéis que marcar la opción de "Mostrar el formulario como bloque" y crear un filtro expuesto de "Búsqueda por texto completo"
- Listo! Ya tenemos nuestra vista y bloque preparados para pintarlo donde queramos y lo más importante, este vista estará usando el índice de búsqueda de SearchAPI lo que lo hace muy potente y rápido!!!