Primero debe definir el guión como printjoin
en tu lexer.
compruébalo con
select IXV_ATTRIBUTE, IXV_VALUE from CTXSYS.CTX_INDEX_VALUES where IXV_CLASS = 'LEXER';
IXV_ATTRIBUTE IXV_VALUE
-----------------------------------------
PRINTJOINS _$%&-
NUMJOIN .
NUMGROUP .
WHITESPACE ,=
Luego, puede (después de volver a crear el índice con este lexer) validar que los tokens sean los esperados:(su tabla variará según el nombre del índice; verifique todas las tablas como 'DR$%$I')
select TOKEN_TEXT from DR$TEXTIDX_IDX$I where TOKEN_TEXT like '%-XYZ99';
TOKEN_TEXT
----------------------------------------------------------------
AN-XYZ99
BAR-XYZ99
FO-XYZ99
Ahora puede consultar la cadena de búsqueda.
Aparentemente debes escapar del guión como BAR-XYZ99
encontrará filas con BAR
no que contiene XYZ99
; aunque la documentación de hyphen with no space
es un poco diferente.
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
Por alguna razón (estoy en 11.2.0.2.0) el escape con llaves no funciona (no devuelve ninguna coincidencia), pero usar la barra invertida está bien.
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