Eine wenig bis gar nicht bekannte Eigenschaft von Oracle TEXT sind die Stored Query Expressions (SQE).
Damit können bestimmte TEXT-Abfragen quasi im Vorfeld unter einem Begriff gespeichert und anschließend
von allen Nutzern verwendet werden ... Ein einfaches Beispiel anhand des Oracle TEXT Handbuchs ...
begin ctx_query.store_sqe('textdebug_cczarski', 'trace or log or logging or ctx_log'); end;
Von nun an kann man diesen Ausdruck wie ein normales Wort in CONTAINS-Abfragen verwenden ...
SQL> select id from dokument_tab where contains(content, 'sqe(textdebug_cczarski)') > 0; ID ---------- 1
Wendet man das in einem früheren Blog-Posting vorgestellte CTX_QUERY.EXPLAIN an, so kann man sich die Vorgehensweise von
Oracle TEXT näher ansehen ...
ID OPERATION OPTIO OBJECT_NAME POSITION ---------- --------------- ----- --------------- ---------- 1 OR 1 2 WORD trace 1 3 WORD log 2 4 WORD logging 3 5 WORD ctx_log 4
Man sieht von der SQE eigentlich gar nichts mehr - Oracle TEXT löst diese einfach
transparent auf. SQE's sind insbesondere hilfreich, wenn es darum geht, schwierige
CONTAINS-Abfragen (deren Ausarbeitung viel Arbeit war) für andere einfach nutztbar zu machen.