Sintesi
Nella Ricerca Dettagliata (https://geodati.gov.it/geoportale/ricerca-dettagliata, sezione QUANDO) la casella "Considera valori vuoti" produce l'effetto opposto a quello che il nome suggerisce: spuntata esclude i metadati che hanno la data vuota, invece di includerli. Poiché è attiva di default, il comportamento più restrittivo è quello che si ottiene senza toccare nulla.
Riproduzione (GUI, verificata 2026-07-18)
Ricerca sul testo incendi, tipo di data Creazione, intervallo 01/01/2024 → 18/07/2026. Unica variabile: la casella.
| Casella |
Risultati mostrati |
| spuntata (default) |
0 — "La ricerca non ha prodotto risultati" |
| tolta |
15 — "Risultati 1-15 di 15" |
Causa
Le due query costruite dalla pagina differiscono così.
Senza la spunta viene filtrato il solo campo selezionato — ed è corretto:
q=* AND (incendi) AND apiso_CreationDate_dt:[2024-01-01 TO 2026-07-18]
Con la spunta vengono messi in AND anche gli altri due campi data, espansi a un intervallo molto ampio:
q=* AND (incendi) AND (apiso_CreationDate_dt:[2024-01-01 TO 2026-07-18]
AND apiso_PublicationDate_dt:[1900-01-01 TO 2100-12-31]
AND apiso_RevisionDate_dt:[1900-01-01 TO 2100-12-31])
In Elasticsearch/Lucene un campo assente non soddisfa alcun intervallo, per quanto ampio. L'espansione a [1900 TO 2100], pensata per dire "qualsiasi valore", finisce quindi per escludere i record in cui quel campo è vuoto: sopravvivono solo i metadati che hanno tutte e tre le date compilate.
Conferma via API
BASE=https://geodati.gov.it/RNDT/rest/metadata/search
# solo il campo selezionato (= casella tolta) → 15
curl -s -G "$BASE" \
--data-urlencode 'q=incendi AND apiso_CreationDate_dt:[2024-01-01T00:00:00Z TO 2026-07-18T23:59:59Z]' \
--data-urlencode 'num=1' --data-urlencode 'f=json' | jq '.total'
# AND sui tre campi (= casella spuntata) → 0
curl -s -G "$BASE" \
--data-urlencode 'q=incendi AND apiso_CreationDate_dt:[2024-01-01 TO 2026-07-18] AND apiso_PublicationDate_dt:[1900-01-01 TO 2100-12-31] AND apiso_RevisionDate_dt:[1900-01-01 TO 2100-12-31]' \
--data-urlencode 'num=1' --data-urlencode 'f=json' | jq '.total'
Portata
Lo schema si ripete con gli altri tipi di data e su intervalli più ampi, sempre con la casella spuntata:
| Filtro |
Mostrati |
Reali |
| Creazione, 2024 → oggi |
0 |
15 |
| Revisione, 2024 → oggi |
4 |
28 |
| Creazione, 2010 → oggi |
13 |
54 |
Nel primo caso la pagina dichiara che non esiste nulla mentre in catalogo ci sono 15 dataset: chi cerca in buona fede conclude che il dato non ci sia.
Richiesta
Applicare l'intervallo al solo campo selezionato — è già quello che la pagina fa quando la casella è tolta. Se si vuole davvero includere anche i record privi di quella data, occorre una clausola che copra esplicitamente il campo mancante, ad esempio (campo:[da TO a] OR (NOT campo:[* TO *])), invece dell'intervallo [1900 TO 2100].
Correlato
Distinto da #4, che riguarda l'ordinamento per data. Qui il problema è il filtro, che perde record.
Sintesi
Nella Ricerca Dettagliata (
https://geodati.gov.it/geoportale/ricerca-dettagliata, sezione QUANDO) la casella "Considera valori vuoti" produce l'effetto opposto a quello che il nome suggerisce: spuntata esclude i metadati che hanno la data vuota, invece di includerli. Poiché è attiva di default, il comportamento più restrittivo è quello che si ottiene senza toccare nulla.Riproduzione (GUI, verificata 2026-07-18)
Ricerca sul testo
incendi, tipo di data Creazione, intervallo01/01/2024→18/07/2026. Unica variabile: la casella.Causa
Le due query costruite dalla pagina differiscono così.
Senza la spunta viene filtrato il solo campo selezionato — ed è corretto:
Con la spunta vengono messi in AND anche gli altri due campi data, espansi a un intervallo molto ampio:
In Elasticsearch/Lucene un campo assente non soddisfa alcun intervallo, per quanto ampio. L'espansione a
[1900 TO 2100], pensata per dire "qualsiasi valore", finisce quindi per escludere i record in cui quel campo è vuoto: sopravvivono solo i metadati che hanno tutte e tre le date compilate.Conferma via API
Portata
Lo schema si ripete con gli altri tipi di data e su intervalli più ampi, sempre con la casella spuntata:
Nel primo caso la pagina dichiara che non esiste nulla mentre in catalogo ci sono 15 dataset: chi cerca in buona fede conclude che il dato non ci sia.
Richiesta
Applicare l'intervallo al solo campo selezionato — è già quello che la pagina fa quando la casella è tolta. Se si vuole davvero includere anche i record privi di quella data, occorre una clausola che copra esplicitamente il campo mancante, ad esempio
(campo:[da TO a] OR (NOT campo:[* TO *])), invece dell'intervallo[1900 TO 2100].Correlato
Distinto da #4, che riguarda l'ordinamento per data. Qui il problema è il filtro, che perde record.