1. Glossario/

Indice CTXXPATH

CTXXPATH index (Oracle Text)

L’indice CTXXPATH è un tipo specializzato di Oracle Text progettato per documenti XML o JSON archiviati in colonne CLOB o BLOB. A differenza degli indici full-text generici, CTXXPATH mantiene la struttura gerarchica del documento durante l’indicizzazione, rendendo possibile limitare le ricerche a path o nodi specifici anziché cercare sull’intero contenuto testuale.

Come funziona #

La creazione avviene con CREATE INDEX ... INDEXTYPE IS CTXSYS.CTXXPATH. Oracle Text analizza il documento, costruisce una mappa dei path XML/JSON e indicizza sia il contenuto testuale sia la posizione strutturale di ogni nodo.

CREATE INDEX idx_doc_xml
ON documenti(contenuto_xml)
INDEXTYPE IS CTXSYS.CTXXPATH;

Le query sfruttano poi la funzione existsNode o l’operatore CONTAINS con la sintassi path-aware per circoscrivere la ricerca:

SELECT id
FROM documenti
WHERE existsNode(contenuto_xml, '/fattura/cliente[nome="Rossi"]') = 1;

Quando si usa #

CTXXPATH è la scelta corretta quando i documenti hanno una struttura XML o JSON significativa e le query devono distinguere tra nodi con lo stesso valore testuale ma posizioni diverse nel documento. Scenari tipici: archivi di fatture elettroniche, cataloghi prodotto in XML, payload JSON eterogenei.

Il limite principale è la dipendenza dal formato: il documento deve essere XML o JSON ben formato. Per testo non strutturato conviene CTXSYS.CONTEXT; per ricerche puramente strutturali (senza full-text) bastano gli indici relazionali standard su colonne estratte con XMLTable o JSON_TABLE.