加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQLSERVER全文索引的一个BUG

发布时间:2020-12-12 15:56:26 所属栏目:MsSql教程 来源:网络整理
导读:在产品开发中,需要用到数据库全文索引特性,于是对SQLServer数据库的表建立了全文索引,如对资源收集来源表进行全文索引,表结构如下: create table res_original ( ?res_id bigint, ?res_title varchar(100), ?res_content varchar(8000) ) 至于如何建立全文索

在产品开发中,需要用到数据库全文索引特性,于是对SQLServer数据库的表建立了全文索引,如对资源收集来源表进行全文索引,表结构如下:

create table res_original
(
?res_id bigint,
?res_title varchar(100),
?res_content varchar(8000)
)

至于如何建立全文索引,请看上一篇BLOG. 现在要对 res_title 和 res_content 二个字段都开启全文索引,在查询时用如下语句查:

select * from res_original a
where CONTAINS(a.*,@keyword)

我希望在开启全文索引的二个字段中都查找,其中,@keyword 为外部传入的查询内容. 一切工作正常,但是,如果 @keyword 的内容为列 res_title 的某一行的全部内容时,则查询

不到此行数据,如:假设在 res_title 列中有一行内容为 "SQLSERVER数据库全文索引示例",而 @keyword 的内容正好也为 "SQLSERVER数据库全文索引示例" 时,则查询结果中是

没有此行数据的,但用如下语句能查到:

select * from res_original a
where res_title = @keyword

这就说明表中是实实在在存在要查的数据,当然,全文索引相关的一切工作配置都没问题. 在上面查询示例中,如果去掉 "SQLSERVER数据库全文索引示例" 中的 最后一个字,变为

"SQLSERVER数据库全文索引示",传给 @keyword 来查询,是能查询此行数据的. 经过多次测试,感觉这是 SQLServer(2000以上)的一个BUG,或者是另有说法,但本人不得而知.?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读