日期:2014-05-18  浏览次数:20393 次

sql2005全文索引(有些记录查不到)
我用contains(products,'电机')和products like '%电机%' 查出来的结果数不相同
前者342条,后者627条

而且几次查询结果都是一样的,这是怎么回事啊?

bt:我对表重建了索引

------解决方案--------------------
看看,
------解决方案--------------------
关注。
------解决方案--------------------
up
------解决方案--------------------
我用contains(products,'电机')和products like '%电机%' 查出来的结果数不相同 


答:
因为contains它把“电机”当作整词,而不是电一个词和机一个词
所以搜索“电”字没有在电机里面 所以会少条数
------解决方案--------------------
这是全文检索中文分词问题!好像目前还没有什么好的解决方法!

比如你在baidu上搜索 '脑' 肯定查询出来的都没有'电脑'这个词 

按道理说 我查询 脑 电脑业应该包含进去,可是就是没有!呵呵 !
------解决方案--------------------
全文索引 和普通的like 索引是有很大区别的.

 全文索引是根据词表进行查询.如果你输入的词不在词表中或没有意义 可能一条记录都查不出来.虽然记录中确实有这两个字也没有用.

 普通的like 索引就没有这个问题 它不管你输入的是什么词都会去检索,只要有就会返回结果.但是有一
点要注意 like 查询的效率非常低 如果数据良的话几个小时以后返回结果都有可能.

数据库全文索引的准确性是比较低的 包括oracle 也一样. 可能数据库的主要路线不是这方面而更注重的是信息的管理.或者是先天不足吧.如果要作到高准确率是没有办法的.而且填充索引的速度非常慢.

如果要是真想作到高准确率并且高速 就要抛弃数据库而使用专门的全文检索工具.
------解决方案--------------------
JF
------解决方案--------------------
Up