For the complete documentation index, see llms.txt. This page is also available as Markdown.

Il motore di ricerca

Il CMS usa Apache Solr come motore di ricerca full-text tramite l'estensione ezfind. Ogni istanza della piattaforma ha il proprio core Solr dedicato, che contiene una copia indicizzata di tutti i cont

Motore di ricerca (Solr)

Il CMS usa Apache Solr come motore di ricerca full-text tramite l'estensione ezfind. Ogni istanza della piattaforma ha il proprio core Solr dedicato, che contiene una copia indicizzata di tutti i contenuti pubblicati.

L'indicizzazione avviene in automatico quando pubblichi un contenuto.

Solr dentro l'architettura del CMS

Il CMS ha un'architettura monolitica: un core in PHP gestisce i contenuti e si appoggia a una persistenza principale, il database PostgreSQL. Attorno al core lavorano alcuni servizi di supporto, tra cui Solr stesso e un layer di cache HTTP (Varnish).

Solr è uno di questi servizi di supporto. Il core del CMS si collega ai componenti che gli servono in questo modo:

  • Solr, il motore di ricerca: il core gli invia i contenuti da indicizzare tramite chiamate HTTP;

  • PostgreSQL, la persistenza principale: il core legge e scrive qui i contenuti del sito tramite SQL;

  • Redis, un archivio chiave-valore: conserva i dati temporanei delle sessioni utente;

  • sistema di posta, esterno alla piattaforma: il core gli invia le email tramite protocollo SMTP.

In questo schema Solr riceve i dati dal core, ma non li possiede: la fonte resta sempre PostgreSQL.

Come funziona l'indicizzazione

Quando pubblichi o modifichi un contenuto, il CMS lo invia automaticamente a Solr per l'indicizzazione. Il componente ocsearchtools si occupa di:

  • tradurre le query degli utenti nel formato Solr;

  • gestire la navigazione a faccette, cioè i filtri per tipologia, categoria, data e altri criteri;

  • applicare i filtri per classe di contenuto nelle ricerche avanzate.

Tutta la ricerca sul sito e i blocchi filtrabili si appoggiano a Solr: per queste funzioni il CMS non interroga mai direttamente il database PostgreSQL. Per i dataset personalizzati è disponibile il componente occustomfind.

Ultimo aggiornamento

È stato utile?