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

关于SQLServer2008全文索引干扰词

使用SQL SERVER 2008全文索引

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

可以按如下方法解决:

1.自定自己的干扰词库

可以按如下方法解决:1.自定自己的干扰词库
  1. --创建全文非索引字表(干扰词表)
  2. CREATE FULLTEXT STOPLIST T_FULLTEXT_STOPLIST_TableName --全文非索引字表表名
  3. FROM SYSTEM STOPLIST--从系统全文非索引字表导入
  4. --删除我们不需要的干扰词,如"of"字
  5. ALTER FULLTEXT STOPLIST [T_FULLTEXT_STOPLIST_TableName]
  6. DROP 'of' LANGUAGE 'Simplified Chinese';
  7. --增加我们需要的干扰词,如"of"字
  8. ALTER FULLTEXT STOPLIST [T_FULLTEXT_STOPLIST_TableName]
  9. ADD 'of' LANGUAGE 'Simplified Chinese';
  10. 由于此方法有点麻烦,所以我就没去具体测试了。

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';
 
最后,在你建立的表上右键-全文索引-属性-常规-全文索引非索引字表(也就是干扰词表)-下拉框选择你刚才建立的干扰词表
 
好了,如果你的全文索引是自动填充的,等待它填充完毕,或者手工重新完全填充。
 
最后,查询,大功告成了!

__EOF__

本文作者你好柴九
本文链接https://www.cnblogs.com/jiuge/p/9321321.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   你好柴九  阅读(678)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示