Nejprve musíte definovat spojovník jako printjoin
ve vašem lexeru.
zkontrolujte to pomocí
select IXV_ATTRIBUTE, IXV_VALUE from CTXSYS.CTX_INDEX_VALUES where IXV_CLASS = 'LEXER';
IXV_ATTRIBUTE IXV_VALUE
-----------------------------------------
PRINTJOINS _$%&-
NUMJOIN .
NUMGROUP .
WHITESPACE ,=
Poté můžete (po opětovném vytvoření indexu pomocí tohoto lexeru) ověřit, že tokeny jsou podle očekávání:(vaše tabulka se bude lišit podle názvu indexu; zkontrolujte všechny tabulky jako 'DR$%$I')
select TOKEN_TEXT from DR$TEXTIDX_IDX$I where TOKEN_TEXT like '%-XYZ99';
TOKEN_TEXT
----------------------------------------------------------------
AN-XYZ99
BAR-XYZ99
FO-XYZ99
Nyní můžete zadat dotaz na vyhledávací řetězec.
Zjevně musíte pomlčku opustit jako BAR-XYZ99
najde řádky s BAR
ne obsahující XYZ99
; ačkoli dokumentace hyphen with no space
je trochu jiný.
SELECT SCORE(1),txt
FROM textidx
WHERE CONTAINS(txt, 'BAR-XYZ99',1) > 0;
SCORE(1) TXT
---------- ------------------------------------------------------------------------------------
4 unbekannt Stadt Text: FO-XYZ99 << foobar Straße 31.12.2017 Datum Host 20160101 bar
Z nějakého důvodu (jsem na 11.2.0.2.0) escapování se složenými závorkami nefunguje (nevrací žádnou shodu), ale použití zpětného lomítka je v pořádku.
SELECT SCORE(1),txt
FROM textidx
WHERE CONTAINS(txt, 'BAR\-XYZ99',1) > 0;
SCORE(1) TXT
---------- ------------------------------------------------------------------------------------
4 unbekannt Stadt Text: BAR-XYZ99 << foobar Straße 31.12.2017 Datum Host 20160101 bla