關於SQLServer2008全文索引干擾詞
使用SQL SERVER 2008全文索引
進行搜索 contains(Keywords, '"xx of xx*"') (注意是後面有包含"*"號的查詢),由於包含了類似"of","and","or"等這類默認的全文索引干擾詞,導致查詢不到結果。
可以按如下方法解決:
1.自定自己的干擾詞庫
可以按如下方法解決:1.自定自己的干擾詞庫
--創建全文非索引字表(干擾詞表)
CREATE FULLTEXT STOPLIST T_FULLTEXT_STOPLIST_TableName --全文非索引字表表名
FROM SYSTEM STOPLIST; --從系統全文非索引字表導入
--刪除我們不需要的干擾詞,如"of"字
ALTER FULLTEXT STOPLIST [T_FULLTEXT_STOPLIST_TableName]
DROP 'of' LANGUAGE 'Simplified Chinese';
--增加我們需要的干擾詞,如"of"字
ALTER FULLTEXT STOPLIST [T_FULLTEXT_STOPLIST_TableName]
ADD 'of' LANGUAGE 'Simplified Chinese';
- 由於此方法有點麻煩,所以我就沒去具體測試了。
2.直接關閉干擾詞功能
-設置關閉全文索引干擾詞 ALTER FULLTEXT INDEX ON [TableName] SET stoplist OFF --如果要再開啓,可以這樣設置開啓全文索引干擾詞 ALTER FULLTEXT INDEX ON [TableName] SET stoplist SYSTEM 如果執行以上語句出現瞭如下錯誤: 'stoplist' 附近有語法錯誤。 或 Incorrect syntax near 'STOPLIST'. 那是因爲SQL Server兼容級別的問題,解決方法爲,執行以下語句: --改變SQL兼容性版本80 = SQL Server 2000, 90 = SQL Server 2005, 100 = SQL Server 2008... ALTER DATABASE DatabaseName SET COMPATIBILITY_LEVEL = 100
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
在網上查了很多關於全文索引查不到數據的問題。 上面說是干擾詞的問題,需要修改相應的文件,但是SQL2008的文件又和SQL2005版本的位置什麼的不一樣,需要用SQL語句進行修改,但是用SQL語句提示沒有權限,或乾脆找不到這些文件,改了也不管用等,所以SQL2008干擾詞的問題很令人頭疼。而且很難找到一個好的解決辦法。 在這裏,有一個新的辦法,可以解決或避開這些麻煩的問題。 關鍵:你所建立的全文索引,如果是手動建立的,沒有給他指定干擾詞表,那麼他就會自動的指定系統的干擾詞表。 所以,要手動建立一個屬於自己的干擾詞表,不用系統的了,因爲上面提到過,它很麻煩。 語句: CREATE FULLTEXT STOPLIST MyFsyTable --全文非索引字表表名(也就是干擾詞表) FROM SYSTEM STOPLIST; --從系統全文非索引字表導入 --下面是刪除你想刪除的干擾詞 ALTER FULLTEXT STOPLIST MyFsyTable DROP '一' LANGUAGE 'Simplified Chinese' ; 最後,在你建立的表上右鍵-全文索引-屬性-常規-全文索引非索引字表(也就是干擾詞表)-下拉框選擇你剛纔建立的干擾詞表 好了,如果你的全文索引是自動填充的,等待它填充完畢,或者手工重新完全填充。 最後,查詢,大功告成了! |