sql >> データベース >  >> RDS >> Oracle

OracleTextには技術コンテンツが含まれています

    まず、ハイフンをprintjoinとして定義する必要があります 字句解析プログラムで。

    で確認してください
    select IXV_ATTRIBUTE, IXV_VALUE from CTXSYS.CTX_INDEX_VALUES where IXV_CLASS =  'LEXER';
    
    IXV_ATTRIBUTE                  IXV_VALUE     
    -----------------------------------------
    PRINTJOINS                     _$%&-         
    NUMJOIN                        .              
    NUMGROUP                       .              
    WHITESPACE                     ,= 
    

    次に、(このレクサーでインデックスを再作成した後)トークンが期待どおりであることを検証できます:(テーブルはインデックス名によって異なります。'DR$%$ I'などのすべてのテーブルを確認してください)

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

    これで、検索文字列をクエリできます。

    どうやら、ハイフンをBAR-XYZ99としてエスケープする必要があります BARの行を検索します ない XYZ99を含む;ただし、スペースのないhyphen with no space 少し違います。

    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
    

    何らかの理由で(私は11.2.0.2.0を使用しています)、中括弧を使用したエスケープは機能しません(一致を返しません)が、円記号を使用しても問題ありません。

    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. エラー:AlpineDockerイメージにPostGISをインストールする際の満足できない制約

    2. PostgreSQL9.5でMERGEを作成する

    3. MySQLでのEXISTSの使用

    4. SQLクエリを実行できません