sql >> Database >  >> RDS >> Oracle

Oracle-tekst bevat en technische inhoud

Eerst moet u het koppelteken definiëren als een printjoin in je lexer.

controleer het met

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

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

Vervolgens kunt u (na het opnieuw maken van de index met deze lexer) valideren dat de tokens zijn zoals verwacht:(uw tabel zou variëren op basis van de indexnaam; controleer alle tabellen zoals 'DR$%$I')

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

Nu kunt u zoeken naar de zoekreeks.

Het is duidelijk dat u het koppelteken moet escapen als BAR-XYZ99 vindt rijen met BAR niet met XYZ99; hoewel de documentatie van hyphen with no space is een beetje 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

Om de een of andere reden (ik ben op 11.2.0.2.0) werkt het ontsnappen met accolades niet (retourneert geen overeenkomst), maar het gebruik van backslash is prima.

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. Zoek telefoonnummer van MYSQL DB

  2. Symfony2 en Doctrine2:Geen identifier/primaire sleutel gespecificeerd voor Entiteit X. Elke Entiteit moet een identifier/primaire sleutel hebben

  3. Slaapstand, Postgresql:Kolom x is van het type oid, maar expressie is van het type byte

  4. Hoe u alle weergaven in een PostgreSQL-database kunt weergeven