Oracle Text
Oracle Text (Oracle interMedia Text, ConText)
Oracle Text è il motore di ricerca full-text integrato in Oracle Database. Permette di indicizzare e interrogare grandi volumi di testo strutturato e non strutturato direttamente all’interno del database, senza dipendenze esterne e senza licenza aggiuntiva rispetto alla Standard o Enterprise Edition.
Come funziona #
Oracle Text costruisce indici specializzati (di tipo CONTEXT, CTXCAT, CTXRULE o CTXPATH) sulle colonne testuali. L’indice CONTEXT è il più comune: tokenizza il testo, applica stemming e stoplist, e memorizza le posizioni dei token in strutture interne ottimizzate per la ricerca.
Le query avvengono tramite l’operatore CONTAINS nella clausola WHERE:
SELECT doc_id, title
FROM documents
WHERE CONTAINS(body, 'database AND performance', 1) > 0
ORDER BY SCORE(1) DESC;
L’indice va sincronizzato manualmente o schedulato con CTX_DDL.SYNC_INDEX dopo operazioni DML, perché non è transazionale in tempo reale.
Quando si usa #
Oracle Text è indicato quando:
- il volume di testo supera quello gestibile con
LIKEoREGEXP_LIKEsenza degrado delle prestazioni; - servono funzionalità avanzate come ricerca per prossimità, fuzzy matching, espansione tematica o highlight dei risultati;
- i documenti risiedono già in Oracle Database e spostare i dati verso un motore esterno (Elasticsearch, Solr) introdurrebbe complessità architetturale non giustificata.
Il limite principale è la sincronizzazione dell’indice: in scenari ad alto tasso di scrittura, il lag tra DML e aggiornamento dell’indice va pianificato esplicitamente.