编程点滴.LUCENE执行检索和分页

争取每天记录一点

在Lucene早期的版本中是使用Hits存检索结果的.在我的项目中也是先用的这个.但是效率真的不高.它一次将所有的数据都提取出来处理,所以很慢.

现在我们用TopDocs来代替Hits.

TopDocs常用调用方法如下

方法 说明
TopDocs Search(Query query, int n) 条件和取前n条数据
TopDocs Search(Query query, Filter filter, int n) 使用过滤器的检索
TopFieldDocs Search(Query query, Filter filter, int n, Sort sort) 排序的检索结果

 

TopDocs三个重要属性和方法

totalHits 总共命中的个数

scoreDocs 匹配文档的集合包含了DocId和Score 一般通过DocId取文档

getMaxScore() 返回最匹配的文档得分.

 

TopDocs检索结果分页

第一种方法:类似使用Hits,一次将所有的DocId都取出来后再排序.通常将这个结果放到缓存中,适用于对检索结果频繁翻页的情况.

第二种方法:每次都是新搜索,n的数值随着翻页不断增加.大部分都会选择这种方式,尤其是数据量大,检索时间长,命中普遍低的情况.

LUCENE.NET QQ交流群(81361051)

posted @ 2010-08-30 15:51  寒 刚入门  阅读(870)  评论(1编辑  收藏  举报
刚入门的寒