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

    转自:https://www.cnblogs.com/jiuge/p/9321321.html

  • 相关阅读:
    混用Int与IntPtr导致GetProcAddress始终返回null
    Net中获取程序集路径
    Sql server 2014 同一数据库换名还原,导致同名库一直处于还原状态
    微耕N3000注入
    Xaramin IOS 开发常见问题
    Vs2017 xaramin mac build agent部署后记
    Git 笔记
    spring AOP
    JAVA 反射原理
    Hyperledger Fabric:fabric private data技术【官方文档翻译】
  • 原文地址:https://www.cnblogs.com/shiyi2014/p/12612565.html
Copyright © 2011-2022 走看看