Drupal: ordinamento e ricerca fulltext sullo stesso campo con Search API Solr

Drupal: ordinamento e ricerca fulltext sullo stesso campo con Search API Solr

Il modulo Search API, abbinato ad Apache Solr, è uno strumento molto flessibile e potente per creare e gestire sistemi di ricerca online all'interno di un sito web Drupal. L'installazione e la configurazione di Search API e Apache Solr non è delle più semplici (guida per installare Search API e Solr su Drupal 7 con Debian)  ed inoltre richiede risorse hardware che vanno ben oltre alle classiche capacità di un hosting condiviso, d'altronde se si hanno certe necessità probabilmente un hosting condiviso non è comunque adatto.

Dopo questa breve introduzione veniamo all'argomento di questo approfondimento: ordinare un elenco di risultati generati da Search API per un campo in cui si vuole effettuare anche una ricerca full text.

La combinazione Search API / Solr impedisce infatti di attivare un ordinamento per i campi indicizzati in maniera fulltext, questo perché altrimenti le prestazioni potrebbero subire dei cali drammatici.

Come fare quindi per ordinare una vista Drupal che si appoggia a Search API e che espone un filtro per lo stesso campo di ordinamento?

La soluzione sta nella configurazione del modulo Drupal Search API che si svolge in tre passi:

  1. Per prima cosa si deve impostare il campo in questione con l'indicizzazione di tipo "String", in questo modo il campo potrà essere usato come criterio di ordinamento ma non come campo su cui effettuare ricerche.
  2. A questo punto bisogna quindi attivare l'opzione "Aggregated fields" (si trova nella scheda "Workflow" della configurazione di Search API) e creare un nuovo campo aggregato di tipo "Fulltext" contenente il campo da usare per la ricerca.
  3. Infine nella vista che restituisce i risultati tramite Search API si potrà aggiungere un filtro esposto di tipo "Fulltext" che userà il campo aggregato configurato nel punto precedente.