Sqlserver2008及以上使用全文索引排除干扰词
关于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' ; 最后,在你建立的表上右键-全文索引-属性-常规-全文索引非索引字表(也就是干扰词表)-下拉框选择你刚才建立的干扰词表 好了,如果你的全文索引是自动填充的,等待它填充完毕,或者手工重新完全填充。 最后,查询,大功告成了! |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)