Index CONTEXT
CONTEXT index (Oracle Text)
Indexul CONTEXT este tipul principal de index din Oracle Text, proiectat pentru căutarea full-text în coloane care conțin text nestructurat: documente, articole, opinii juridice, note tehnice. Spre deosebire de un index B-tree clasic, nu indexează valori discrete, ci tokeni lingvistici, construind o structură invertită care mapează fiecare cuvânt la documentele în care apare.
Cum funcționează #
La creare, Oracle Text tokenizează conținutul coloanei (de obicei CLOB), aplică filtre lingvistice (stemming, stopwords, thesaurus opțional) și populează o serie de tabele interne — $I, $K, $R, $N — care formează indexul invertat. Interogările folosesc operatorul CONTAINS în locul lui LIKE:
SELECT doc_id, SCORE(1) AS relevanta
FROM documente
WHERE CONTAINS(text, 'contract AND (inchiriere OR arenda)', 1) > 0
ORDER BY relevanta DESC;
Indexul evită scanarea secvențială completă a coloanei CLOB la fiecare interogare, reducând drastic timpii de răspuns pe seturi de date de mari dimensiuni.
Când se utilizează #
Indexul CONTEXT este potrivit atunci când:
- coloana conține text lung și variabil (documente, PDF-uri convertite, XML);
- interogările necesită operatori booleeni, căutare prin proximitate sau recuperare bazată pe concept;
- volumul de date face impracticabil orice demers bazat pe
LIKE '%...%'.
O limitare operațională semnificativă: indexul CONTEXT nu se actualizează în timp real. Rândurile inserate sau modificate după crearea indexului devin căutabile doar după o sincronizare explicită (CTX_DDL.SYNC_INDEX) sau printr-un job programat. Pentru scenarii cu scrieri frecvente, trebuie planificată o strategie de sincronizare aliniată cu latența de căutare acceptabilă.