Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Texto Oracle Contém e conteúdo técnico


Primeiro você deve definir o hífen como um printjoin em seu lexer.

verifique com
select IXV_ATTRIBUTE, IXV_VALUE from CTXSYS.CTX_INDEX_VALUES where IXV_CLASS =  'LEXER';

IXV_ATTRIBUTE                  IXV_VALUE     
-----------------------------------------
PRINTJOINS                     _$%&-         
NUMJOIN                        .              
NUMGROUP                       .              
WHITESPACE                     ,= 

Então você pode (depois de recriar o índice com este lexer) validar se os tokens estão conforme o esperado:(sua tabela varia com base no nome do índice; verifique todas as tabelas como 'DR$%$I')
select TOKEN_TEXT from DR$TEXTIDX_IDX$I where TOKEN_TEXT like '%-XYZ99';
TOKEN_TEXT                                                     
----------------------------------------------------------------
AN-XYZ99                                                         
BAR-XYZ99                                                        
FO-XYZ99

Agora você pode consultar a string de pesquisa.

Aparentemente, você deve escapar do hífen como BAR-XYZ99 encontrará linhas com BAR não contendo XYZ99; embora a documentação do hyphen with no space é um pouco 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 algum motivo (estou em 11.2.0.2.0) o escape com chaves não funciona (não retorna nenhuma correspondência), mas usar barra invertida é bom.
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