2009-12-09 66 views
4

我在SQL Server 2008中使用全文搜索索引創建了數據庫。我在Stoplist中定義了Stopword'al'。但是,當我搜索關鍵字'al'的任何短語時,單詞'al'仍然在排名中。全文搜索:正在搜索噪聲字詞

這可能與我分解搜索詞並重構它們有關。然後我搜索多個字段並對結果進行排名:http://pastebin.com/fdce11ff。此功能分手搜索

'al hamra' 

("*al*" ~ "*hamra*") OR ("*al*" OR "*hamra*") 

的全文搜索。

想象一下這樣的情景:

名稱: 哈姆拉,作者:傑克·布朗,體裁:小說 鋁Karawan酒店,作者:鋁HANZ,類型:愛情

現在對於「哈姆拉搜索'將返回'Al Karawan',儘管'al'是在停止列表中。爲什麼是這樣?我認爲stoplists會導致單詞失去他們的權重?

回答

1

噪聲字是特定於代碼頁的;你有沒有把它添加到正確的?您可以使用sys.dm_fts_parser進行測試(下圖),這也可能比您的代碼中的手動分詞更好(或不是)。

SELECT special_term, display_term 
FROM sys.dm_fts_parser 
    (' "al hamra" ', 1033, 0, 0) 

假設你使用的代碼頁1033如果你的干擾詞是你想到那麼它應該在列表中noiseword可見的代碼頁。

+0

該查詢顯示'al'完全匹配。 我發現'al'在英文名單中。所以我清除了停止列表,並在Neutral中重新添加了'al'。但是,現在當我運行http://pastebin.com/m6d9fc5f4時,它不會顯示。我已確認它存在,因爲我無法重新添加它(出現錯誤)。 您提到的查詢仍然顯示'al'爲完全匹配。 – 2009-12-10 15:38:41

+0

哦,爲了澄清,我的目錄列出了所有全文索引'中立'。 – 2009-12-10 15:40:03

+0

試圖將停止列表和所有全文索引的語言改爲英文。該列表現在顯示使用查詢http://pastebin.com/m6d9fc5f4,但運行您的查詢仍然顯示'al'完全匹配:( – 2009-12-10 15:50:10