Ricerca avanzata in Drupal
La ricerca core di Drupal si basa su MySQL fulltext, sufficiente per siti piccoli ma limitata in scala e rilevanza. Per ricerca enterprise si usa Search API come abstraction layer e Apache Solr (o Elasticsearch) come backend di indicizzazione.
Installazione
composer require drupal/search_api drupal/search_api_solr drush en search_api search_api_solr
Per Solr serve un server installato (Solr 8.11+ o 9.x), tipicamente in container Docker o servizio cloud (es. SearchStax, Acquia Search).
Server e index
Search API distingue:
- Server: backend (Database, Solr, Elasticsearch)
- Index: configurazione di cosa indicizzare (entity type, bundle, fields)
Da /admin/config/search/search-api si crea il server Solr (URL, core name, schema version) e poi un'index su Content con i campi (title, body, tags, created).
Field configuration
Per ogni campo si configura il tipo (Fulltext, String, Integer, Date) e il boost (peso nella rilevanza). Title con boost 5.0 contribuisce più del body 1.0 al ranking.
Processors
Pipeline di trasformazione del contenuto prima dell'indicizzazione:
- HTML filter (strip HTML tags)
- Tokenizer (split parole)
- Lowercase
- Stemmer (radici linguistiche)
- Stopwords (rimuove parole comuni)
- Ignore characters (punteggiatura)
Processor lingua-specifici (italiano: stemmer + stopwords ita) migliorano la rilevanza.
Indicizzazione
Prima indicizzazione full:
drush search-api:index
Successivamente Drupal indicizza in coda automaticamente alla creazione/modifica di contenuti. Cron eseguito frequentemente mantiene l'index aggiornato.
Search view
Si crea una View di tipo "Search index" che query Solr. Si configurano filtri esposti (fulltext search, faccette su tags/category), sort (Relevance, Date), pagination.
Faccette
Il modulo facets aggiunge faccette navigabili (checkbox di categorie con count). Ogni faccetta e' un blocco posizionabile in sidebar. UI moderna con tag list, slider per range numerici.
Did you mean / suggester
Solr offre query suggestion (autocomplete) e "did you mean" (correzione tipi). Configurabili nei processor avanzati e via search_api_autocomplete.
Highlight
Il modulo search_api_highlight evidenzia i termini cercati nei risultati con tag <mark> o personalizzato.
Hai bisogno di aiuto?
Se vuoi un sito Drupal performante dal team di G Tech Group, scrivici tramite il modulo di contatto.