Curso de Drupal 8 (XVII): Sistemas de búsqueda de contenido: Search API e integración con Apache Solr
En este capítulo vamos a ver cómo se realizan las búsquedas en Drupal y cómo optimizarlas.
El módulo search_api_solr
Este módulo nos permite realizar búsquedas desde solr en vez desde la BBDD
Pare ello tendremos que instalar el módulo con el comando:
composer require drupal/search_api_solr
Debido a un error en una de las dependencias en el momento de escribir esta guía deberemos ejecutar:
composer require symfony/event-dispatcher:“4.3.4 as 3.4.99” drupal/search_api_solr:^3.5
Después debremos habilitar el módulo search_api_solr
drush en search_api_solr
y el módulo search_api_solr_default, que nos facilitará la tarea de gestionar la conexión al servidor
drush en search_api_solr_defaults
Search API
A través de la url /admin/config/search/search-api podemos acceder al menú de configuración del módulo.
Desde aquí podemos configurar los dos elementos principales del Search API: el servidor y el índice.
Al principio los dos elementos nos aparecen configurados pero con un par de pasos podemos crearlos de golpe:
Aquí lo más importante es darle un nombre que es obligatorio y decir que debe registrar el servicio de la BBDD con un mínimo de 1 palabra y que debe buscar por partes de una sólo palabra.
También puede seleccionares el servicio que queremos usar, bien el de database o el de Solr.
De esta manera permite usar distintos servicios con una misma configuración.
Después configuraremos el índice de la búsqueda:
Aquí es donde deberemos colocarle un nombre al índice de contenidos dependiendo de lo que queramos indexar, relacionarlo con un servidor, el que indicamos anteriormente y configurar cuándo debe indexarse el contenido. Normalmente suele recomendarse que se marque la opción Index ítems immediately.
A mayores disponemos de varias pestañas en la parte superior derecha:
- Vista con el resumen del índice, desde ahí podemos mandar reindexar el contenido.
- Editar: donde podemos cambiar la configuración base del índice.
- Fields: donde podemos seleccionar los campos que queremos indexar.
- Filters: los filtro que queremos realizar en la búsqueda.
Aquí la parte más importante es la de los campos de la búsqueda que realizamos a través de la pestaña Fields:
Como puede verse podemos seleccionar todos los campos que nos interesen.
A la derecha debería aparecernos el tipo de indexado, en el tipo de contenido con seleccionar texto sería suficiente ya que internamente utiliza un nombre de sistema o nombre máquina y es o es igual o no lo es. Pero en el resto de campos deberemos seleccionar Fulltext para poder buscar internamente dentro del campo.
Después de configurar todos los campos a indexar bastaría con irnos a la vista y comprobar que está todo el contenido indexado:
Si no está el contenido indexado debería pulsar en el botón Index Now.
Integración con Apache Solr
Para arrancar Solr hemos modificado el fichero de docker-compose para arrancar el servidor de manera sencilla:
solr:
image: solr:7
volumes:
#- ./env/solr/blog:/opt/solr/server/solr/blog
#- ./solr:/opt/solr/server/solr
- solrdata:/var/lib/solr
ports:
- "8983:8983"
restart: always
Esto significa que el servidor debería estar arrancado en: http://localhost:8983/
Para configurar el indexado es necesario crear un core en el servidor de Solr que normalmente requiere pasar una configuración que hay como ejemplo en el módulo de search_api_solr, al directorio donde solr configura el core generado.
Si no siempre es posible gestionar desde el contenedor de solr:
solr create -c blog -n data_driven_schema_configs
Donde blog es el nombre que le damos al core que hay que configurar en drupal para que enganche con el servidor de solr.
Desde el Drupal deberíamos ir a la configuración del Servidor de Solr
/admin/config/search/search-api
Debería aparecer la configuración de solr si el servidor está arrancado
Referencias
- https://opensenselabs.com/blog/tech/use-apache-solr-drupal-8
- https://www.ostraining.com/blog/drupal/apache-solr/
- https://dev.to/arturolinares/setup-solr-and-drupal-using-docker-3nh6
Esta obra está bajo una licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España.