0

我正在使用SQL Server 2008 R2和freetexttable爲我的網站運行全文搜索。輸入停用詞時出現此錯誤:全文搜索在噪音字上使用Freetexttable失敗 - SQL Server 2008 R2轉換噪音字不起作用

信息:全文搜索條件包含噪音詞。

所以我做了每個人都說要做的事情,並打開了轉換噪音詞,以便停止/噪音詞被忽略,查詢可以繼續。但這並沒有改變:

sp_configure 'show advanced options', 1; 
RECONFIGURE; 
GO 
sp_configure 'transform noise words', 1; 
RECONFIGURE; 
GO 

我仍然收到相同的錯誤信息。所以現在我唯一的選擇是關閉停止列表,但這是不好的,因爲如果有人在搜索中放置「the」,它將返回所有頁面,因爲每個頁面中都有「the」。我想刪除停用詞,但SQL Server 2008 R2不適合我。

有沒有人真的得到這個在2008 R2的工作?我的兼容性水平已經是100.

有沒有什麼辦法讓我停下來的話被忽略,而不是索引?

回答

2

我很欣賞這很晚,可能會幫助其他人下線。

根據系統停止列表創建一個新的最終目錄;這將創建與系統停止列表中的所有單詞(你不能在2008+ SQL修改)

CREATE FULLTEXT STOPLIST slMyNewStopList 
FROM SYSTEM STOPLIST AUTHORIZATION dbo; 

然後我檢查了新spotlist已正確創建一個新的索引字表;

select * from sys.fulltext_stoplists 
select * from sys.fulltext_stopwords 

在我的情況下,新的名單是ID 6.我想刪除的詞是它;因爲人們希望能夠在數據中搜索「IT功能」。所以我檢查了這樣的目錄中的單詞;

select * from sys.fulltext_stopwords 
where stoplist_id = 6 and stopword = 'it' and language like '%english%' 

要從停止列表中刪除單詞,您需要調用系統函數;我刪除了英文和英文英文。此時你必須有分號。

ALTER FULLTEXT STOPLIST slMyNewStopList DROP 'it' LANGUAGE 'English'; 

ALTER FULLTEXT STOPLIST slMyNewStopList DROP 'it' LANGUAGE 'British English'; 

我再確認通過運行SELECT查詢再次

select * from sys.fulltext_stopwords 
where stoplist_id = 6 and stopword = 'it' and language like '%english%' 

我再更新我希望能夠搜索的IT字表中的字是從我停止列表中丟失;

USE [Database] 
GO 
ALTER FULLTEXT INDEX ON [dbo].[tblDocuments] SET STOPLIST = [slMyNewStopList] 

最後,我重建了目錄,以便重新編制文檔。

USE [Database] 
GO 
ALTER FULLTEXT CATALOG [catExample] REBUILD 
GO