全文索引带来的排序问题
我用的是sql server 2005.
有一个百万数据的表,使用全文索引时有这样的问题:
查询前8条
SELECT TOP 8 ID FROM MyView WHERE CONTAINS(Ename, '新闻 ')
得到结果如下:
4
15
68
98
155
187
205
287
查询前16条
SELECT TOP 16 ID FROM MyView WHERE CONTAINS(Ename, '新闻 ')
得到结果如下:
315842
315893
374112
221583
…………
338420
就是 TOP 16 的结果里面不包含 TOP 8 的结果,如果强制排序:
SELECT TOP 8 ID FROM MyView WHERE CONTAINS(Ename, '新闻 ') ORDER BY Etime ASC
SELECT TOP 16 ID FROM MyView WHERE CONTAINS(Ename, '新闻 ') ORDER BY Etime ASC
强制排序的话 TOP 16 的结果就包含 TOP 8 的结果。这给分页带来很大的麻烦。
主要问题是:
分页有问题,而且用全文索引也破坏了我聚集索引的排序,所以必须用排序,但用排序的话查询时间就从 13ms 狂增到 1500ms 以上
想请教高手这是全文索引本身的问题还是我的使用有问题啊?我的唯一索引是 ID ,聚集索引是Etime ,全文索引建在Ename以及另外两个字段上,简体中文。
如果是全文索引本身的问题,有没有办法优化啊?
------解决方案--------------------还 真不清楚...
------解决方案--------------------不知道
------解决方案--------------------Up。
------解决方案--------------------全文搜索相关度可用rank排序
如:
SQL = "Select top "& MaxStr &" * From book t Inner Join FreeTextTable(book,(title,class,出版社,作者),'"& Key &"') k on t.xmlid = k.[key] Order By k.rank desc"