我們在項目中使用SQL Server 2005。系統的用戶可以使用「關鍵字」搜索某些對象。我們實現這一目標的方式是爲每個表中可能包含這些'關鍵字'的重要列創建一個全文目錄,然後使用CONTAINS搜索用戶在該索引中的搜索框中輸入的關鍵字。例如,假設你有電影對象,並且你想讓用戶在文章的標題和正文中搜索關鍵詞,那麼我們將索引標題和劇情欄目,然後這樣做:使SQL Server索引爲小數字
SELECT * FROM Movies WHERE CONTAINS(Title, keywords) OR CONTAINS(Plot, keywords)
(它實際上比這更先進一點,但沒有什麼可怕的複雜)
有些用戶添加數字到他們的搜索,因此,例如,他們想找到「終結者2」 。這裏的問題是,據我所知,在默認情況下SQL Server將不會指數短線的話,這樣做這樣一個搜索:
SELECT * FROM Movies WHERE CONTAINS(Title, '"Terminator 2"')
實際上就相當於這樣做:
SELECT * FROM Movies WHERE CONTAINS(Title, '"Terminator"') <-- notice the missing '2'
,我們正在獲得大量的虛假結果。
有沒有辦法來強制SQL Server索引小的話嗎?優選的是,我寧願只索引數字像1,2,21,等我不知道在哪裏定義索引的標準,或者即使有可能具體爲是。
好了,我這樣做,刪除列表中的「噪音詞」,而現在的行爲是有點不同,但仍然不是你所期望的東西。
的搜索將不會對「終結者2」(我只是在做這件事,我的僱主可能不是真正的快樂,如果我不方便透露我們在做什麼......反正,術語是有點不同,但原理相同),我沒有得到什麼,但我知道有對象包含這兩個單詞。
也許我做錯了什麼?我從ENG,ENU和NEU(中性)的噪聲配置中刪除了所有數字1 ... 9,重新生成索引,並嘗試搜索。