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.