Skip to content

RNDT Ricerca Dettagliata: la casella «Considera valori vuoti» esclude i record con data vuota (ed è attiva di default) #9

Description

@aborruso

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/202418/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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions