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

 

Comments

Leave a Reply

*

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Suscríbete al Boletín

Si quieres estar al tanto de las novedades del blog, ya sabes :)
* = campo obligatorio

powered by MailChimp!

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies