Pertama, Anda harus mendefinisikan tanda hubung sebagai printjoin
di lexer Anda.
periksa dengan
select IXV_ATTRIBUTE, IXV_VALUE from CTXSYS.CTX_INDEX_VALUES where IXV_CLASS = 'LEXER';
IXV_ATTRIBUTE IXV_VALUE
-----------------------------------------
PRINTJOINS _$%&-
NUMJOIN .
NUMGROUP .
WHITESPACE ,=
Kemudian Anda dapat (setelah membuat ulang indeks dengan lexer ini) memvalidasi bahwa token seperti yang diharapkan:(tabel Anda akan bervariasi berdasarkan nama indeks; centang semua tabel seperti 'DR$%$I')
select TOKEN_TEXT from DR$TEXTIDX_IDX$I where TOKEN_TEXT like '%-XYZ99';
TOKEN_TEXT
----------------------------------------------------------------
AN-XYZ99
BAR-XYZ99
FO-XYZ99
Sekarang Anda dapat meminta string pencarian.
Rupanya Anda harus keluar dari tanda hubung sebagai BAR-XYZ99
akan menemukan baris dengan BAR
tidak berisi XYZ99
; meskipun dokumentasi tanda hubung hyphen with no space
sedikit berbeda.
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
Untuk beberapa alasan (saya menggunakan 11.2.0.2.0) melarikan diri dengan kurung kurawal tidak berfungsi (tidak menghasilkan kecocokan), tetapi menggunakan garis miring terbalik tidak masalah.
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