您的位置:首页 > 数据库

Sqlserver2008及以上使用全文索引排除干扰词

2017-11-21 15:07 176 查看








关于SQLServer2008全文索引干扰词

使用SQL SERVER 2008全文索引进行搜索 contains(Keywords, '"xx of xx*"')  (注意是后面有包含"*"号的查询),由于包含了类似"of","and","or"等这类默认的全文索引干扰词,导致查询不到结果。

可以按如下方法解决:


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

转自:http://www.1986z.com/Article-7.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息