sql >> Base de Datos >  >> RDS >> Oracle

Oracle Text Contiene y contenido técnico

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