2012-02-17 122 views
3

我想追查一些現有的代碼中的錯誤,我是新的Oracle全文搜索...如何使用Oracle全文搜索在XML CLOB中搜索單詞「IN」?

我遇到了一個查詢,返回包含單詞「IN」在一個XML文檔中。

例如,可以說我有這個片段存儲在CLOB在我的Oracle 10數據庫:

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

我想找到有B配「IN」的值,所以我創建的所有條目where子句看起來像這樣:

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

但是這不會返回任何結果。我試圖尋找其他術語,如'AA'和'BS',它工作正常。

我已經搜索了谷歌和Oracle documentation的保留字,但我沒有看到「IN」在那裏列出。顯然,它是SQL中的一個保留字,但我在完整的測試搜索或XPATH文檔中沒有看到該字的引用。

我也嘗試通過用{},「」和任何我能想到的瘋狂的東西來避開這個詞,但這並沒有幫助。

任何意見將不勝感激!

回答

2

你的假設可能是對的。在全文檢索中,術語是「停用詞」。如果您未定義自己的停止列表,則使用默認值:CTXSYS.DEFAULT_STOPLIST。請參閱this文章,瞭解默認英語停用列表。 'in'這個詞在裏面。

您可以使用CTX_DDL程序包,特別是CTX_DDL.REMOVE_STOPWORDCTX_DDL.CREATE_STOPLIST刪除停用詞或創建自己的停用列表。

+0

這正是我所需要的。謝謝! – Linkadvitch 2012-02-20 19:05:31

相關問題