2012-02-17 6 views
3

既存のコードのバグを追跡しようとしていますが、Oracleのフルテキスト検索を初めて利用しています...Oracle Full Text Searchを使用してXML CLOB内の単語「IN」を検索する方法は?

「IN」という単語を含む行を返すクエリに問題がありますxmlドキュメント内で

例えば、私は私のOracle 10データベース内のCLOBに保存されているこのスニペットを持って言うことができます:

<a> 
    <b>IN</b> 
</a> 

私は私が作成したように、「IN」との値を有するBしているすべてのエントリを見つけたいですwhere節は次のようになります。

where contains(column, '(IN) INPATH (//b)') > 0; 

しかし、これは結果を返しません。私は 'AA'や 'BS'など他の用語を検索しようとしましたが、うまくいきます。

私はGoogleとOracle documentationの予約語を検索しましたが、そこには 'IN'が表示されていません。明らかに、これはSQLの予約語ですが、完全なテスト検索やXPATHドキュメントではその参照は表示されません。

私は{}、 ""などの言葉でそれを囲んでエスケープしようとしましたが、私が考えることができる狂気のことは助けになりません。

アドバイスをいただければ幸いです!

答えて

2

あなたの前提はおそらく正しいです。全文検索では、用語は「ストップワード」です。独自のストップリストを定義しない場合は、デフォルトの値が使用されます(CTXSYS.DEFAULT_STOPLIST)。既定の英語のストップリストについては、thisの記事を参照してください。 「in」という単語がその中にあります。

CTX_DDLパッケージ(特にCTX_DDL.REMOVE_STOPWORDまたはCTX_DDL.CREATE_STOPLIST)を使用してストップワードを削除するか、独自のストップリストを作成することができます。

+0

これは私が必要としていたものです。ありがとうございました! – Linkadvitch

関連する問題