> For the complete documentation index, see [llms.txt](https://docs.opencityitalia.it/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.opencityitalia.it/sito-web/la-piattaforma/il-motore-di-ricerca.md).

# Il motore di ricerca

Per effettuare una ricerca sul sito web, il cittadino inserisce una o più parole nel campo di ricerca.&#x20;

<figure><img src="/files/y5NyKtL2z9x1nCizNb5M" alt=""><figcaption></figcaption></figure>

Il sito mostra i contenuti pubblicati più pertinenti e consente di individuare più facilmente le informazioni disponibili.

<figure><img src="/files/pmVdLkgFUJSeZyDKejjx" alt=""><figcaption></figcaption></figure>

Dopo aver eseguito una ricerca, il cittadino può restringere i risultati usando i filtri disponibili:

* **Sezioni**;
* **Argomenti**.

<figure><img src="/files/fBYAISZ1mDa8NxxD7VSv" alt=""><figcaption></figcaption></figure>

Il cittadino può anche ordinare i risultati della ricerca per:

* rilevanza;
* data di pubblicazione;
* tipologia di contenuto;
* nome.

<figure><img src="/files/rHwwLrCT7moIVIbPhLnF" alt=""><figcaption></figcaption></figure>

## Struttura tecnica del motore di ricerca

La ricerca usa il CMS, il database PostgreSQL e Apache Solr. Ogni componente svolge un compito specifico. Il CMS gestisce i contenuti e li conserva in PostgreSQL. Quando necessario, invia a Solr una copia dei dati da usare nelle ricerche. Solr elabora le richieste degli utenti e restituisce i risultati. Il database rimane sempre la fonte principale dei contenuti.

### Come funziona l'indicizzazione dei risultati

Quando un redattore pubblica o modifica un contenuto, il sistema lo aggiunge automaticamente alla ricerca. Nella ricerca pubblica, i cittadini trovano solo i contenuti pubblicati. I redattori vedono anche i contenuti privati o programmati, mentre le bozze non sono visibili.&#x20;

Per modificare lo stato di un contenuto, il redattore può consultare [la pubblicazione](/sito-web/la-piattaforma/funzioni-generali-di-gestione-dei-contenuti/pubblicare-un-contenuto.md) e [la gestione dei contenuti nascosti o programmati](/sito-web/la-piattaforma/funzioni-generali-di-gestione-dei-contenuti/nascondere-o-programmare-un-contenuto.md).

Quando un redattore pubblica o modifica un contenuto, il CMS invia i dati a Solr tramite chiamate HTTP. Solr aggiorna il proprio indice e la ricerca usa questa copia per mostrare i risultati. Un contenuto assente dall'indice non appare nella ricerca o nei blocchi filtrabili, anche se è presente nel database PostgreSQL.

### Componenti coinvolti

Il CMS è un'applicazione monolitica in PHP. PostgreSQL conserva i contenuti del sito e resta la fonte dei dati. Il CMS usa **Apache Solr** tramite l'estensione **ezfind**. Ogni piattaforma ha un core Solr dedicato, che contiene una copia indicizzata dei contenuti pubblicati. L'architettura include anche Redis, che conserva i dati temporanei delle sessioni, e Varnish, che gestisce la cache HTTP.

### Ricerche e filtri

Il componente **ocsearchtools** usa l'indice Solr per elaborare le ricerche. Traduce le parole inserite dagli utenti nel formato usato dal motore e gestisce la navigazione a faccette, cioè i filtri per sezione e argomento. La ricerca del sito e i blocchi filtrabili interrogano Solr, non PostgreSQL. Per i dataset personalizzati è disponibile il componente **occustomfind**.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.opencityitalia.it/sito-web/la-piattaforma/il-motore-di-ricerca.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
