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.直接关闭干扰词功能

1-设置关闭全文索引干扰词 2ALTER FULLTEXT INDEX ON [TableName] SET stoplist OFF 3--如果要再开启,可以这样设置开启全文索引干扰词 4ALTER FULLTEXT INDEX ON [TableName] SET stoplist SYSTEM 5 6如果执行以上语句出现了如下错误: 7'stoplist' 附近有语法错误。 89Incorrect syntax near 'STOPLIST'. 10 11那是因为SQL Server兼容级别的问题,解决方法为,执行以下语句: 12--改变SQL兼容性版本80 = SQL Server 2000, 90 = SQL Server 2005, 100 = SQL Server 2008... 13ALTER DATABASE DatabaseName SET COMPATIBILITY_LEVEL = 100 14 15在网上查了很多关于全文索引查不到数据的问题。 16上面说是干扰词的问题,需要修改相应的文件,但是SQL2008的文件又和SQL2005版本的位置什么的不一样,需要用SQL语句进行修改,但是用SQL语句提示没有权限,或干脆找不到这些文件,改了也不管用等,所以SQL2008干扰词的问题很令人头疼。而且很难找到一个好的解决办法。 17 18在这里,有一个新的办法,可以解决或避开这些麻烦的问题。 19 20关键:你所建立的全文索引,如果是手动建立的,没有给他指定干扰词表,那么他就会自动的指定系统的干扰词表。 21 22所以,要手动建立一个属于自己的干扰词表,不用系统的了,因为上面提到过,它很麻烦。 23 24语句: 25CREATE FULLTEXT STOPLIST MyFsyTable --全文非索引字表表名(也就是干扰词表) 26FROM SYSTEM STOPLIST; --从系统全文非索引字表导入 27 28--下面是删除你想删除的干扰词 29ALTER FULLTEXT STOPLIST MyFsyTable 30DROP '一' LANGUAGE 'Simplified Chinese'; 31 32最后,在你建立的表上右键-全文索引-属性-常规-全文索引非索引字表(也就是干扰词表)-下拉框选择你刚才建立的干扰词表 33 34好了,如果你的全文索引是自动填充的,等待它填充完毕,或者手工重新完全填充。 35 36最后,查询,大功告成了!
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )