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