日期:2014-05-17  浏览次数:20407 次

全文索引查询出来的结果比like结果少很多
前面说这种方法速度没办法提升,最好开全文索引

select * from table1 where col like '%str%' union all
select * from table2 where col like '%str%' union all
..............
select * from table3 where col like '%str%' 

前面的帖子:如何加快like的速度http://bbs.csdn.net/topics/390608207

我开了全文索引,但是下面两条语句查出的行数完全不一样

select * from table1 contains(col, 'str')
select * from table1 where col like '%str%'

用contains的结果只有不到10条,而like的结果有6K多。
用sp_help_fulltext_catalogs看,全文索引构建已经结束了,应该不是索引没建立的关系,
而且我把col的语言也设置成2052(汉语),也不应该是断词的问题。

那是什么问题?

------解决方案--------------------
会不会是数据类型问题呀,之前我也试过全文检索技术,如果你在数据中既有字母,又有中文的话,必须把数据类型设置为nvarchar,否则,有的数据能查出来,有的就查不出来。
------解决方案--------------------
try this,

 select * from table1 where contains(col, '"str*"')

------解决方案--------------------
参考 http://social.msdn.microsoft.com/Forums/zh-CN/42f48bfe-0095-4e1d-a0f8-5127de3ff898/contains-freetext?forum=sqlserverzhchs
------解决方案--------------------
lucene或者hubble,不过我没用过,不知道效果