sql >> Databasteknik >  >> RDS >> Oracle

Oracle Text Innehåller och tekniskt innehåll

Först måste du definiera bindestreck som en printjoin i din lexer.

kontrollera det med

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

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

Sedan kan du (efter att ha återskapat index med denna lexer) validera att tokens är som förväntat:(din tabell skulle variera baserat på indexnamnet; kontrollera alla tabeller som 'DR$%$I')

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

Nu kan du fråga efter söksträngen.

Tydligen måste du undkomma bindestrecket som BAR-XYZ99 hittar rader med BAR inte som innehåller XYZ99; även om dokumentationen av hyphen with no space är lite annorlunda.

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

Av någon anledning (jag är på 11.2.0.2.0) fungerar inte flykten med lockiga hängslen (returerar ingen matchning), men det går bra att använda omvänt snedstreck.

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 



  1. Vad är syftet med att sätta ett 'N' framför funktionsparametrar i TSQL?

  2. Programgranskning – Stellar Repair för MS SQL

  3. Kan inte ansluta till '/var/run/mysqld/mysqld.sock'

  4. Deklarera och ställa in variabler i ett urvalsutdrag