Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle Text Enthält technische Inhalte

Zuerst müssen Sie hyphen als printjoin definieren in Ihrem Lexer.

überprüfen Sie es mit

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

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

Dann können Sie (nachdem Sie den Index mit diesem Lexer neu erstellt haben) überprüfen, ob die Token wie erwartet sind:(Ihre Tabelle würde basierend auf dem Indexnamen variieren; überprüfen Sie alle Tabellen wie 'DR$%$I')

select TOKEN_TEXT from DR$TEXTIDX_IDX$I where TOKEN_TEXT like '%-XYZ99';
TOKEN_TEXT                                                     
----------------------------------------------------------------
AN-XYZ99                                                         
BAR-XYZ99                                                        
FO-XYZ99

Jetzt können Sie nach dem Suchstring fragen.

Anscheinend müssen Sie den Bindestrich als BAR-XYZ99 maskieren findet Zeilen mit BAR nicht mit XYZ99; obwohl die Dokumentation von hyphen with no space ist etwas anders.

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

Aus irgendeinem Grund (ich bin auf 11.2.0.2.0) funktioniert das Escape mit geschweiften Klammern nicht (gibt keine Übereinstimmung zurück), aber die Verwendung von Backslash ist in Ordnung.

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