[lucene] lucene 查询分页如何支持排序

85600367 2010-12-28
TopScoreDocCollector topCollector = TopScoreDocCollector.create(
					100, false);		
searcher.search(query, topCollector);
System.out.println("命中:" + topCollector.getTotalHits());
 // 查询当页的记录  
ScoreDoc[] docs = topCollector.topDocs((pageNO - 1) * pageSize,
					pageSize).scoreDocs;;




Lucene的分页这样是可以,但是如果我想查询到的结果按时间倒序显示呢,就是当得分相同的时候按时间的倒序来返回数据。

//索引排序条件
SortField[] sortfield = new SortField[] { SortField.FIELD_SCORE, 
new SortField(null,SortField.DOC, true) };
Sort sort = new Sort(sortfield);
			
TopDocs topDocs = searcher.search(query, null, 10, sort);
System.out.println("检索到总数:" + topDocs.totalHits);
ScoreDoc[] scoreDocs = topDocs.scoreDocs;


Lucene的排序不支持分页,不知道大家是怎么解决这个问题的?
85600367 2010-12-29
lucene不像solr 支持start参数 指定从多少条记录开始
所以lucene必须进行2次查询来确定 查询到的总记录数···
luckaway 2010-12-29
lucene支持多个排序字段的
illu 2011-01-22
排序也可以分么 
就说你的代码  比如说需要第十页的内容 那么就拿100条 然后91-100返回 剩下丢弃
85600367 2011-01-24
恩 用booleanQuery 搞定了多条件查询····
abcstring 2011-12-09
TopFieldCollector.create(sort, topCount, false, false, false, false);
传入sort对象即可 create重载方法很多 自己看看就知道了
Global site tag (gtag.js) - Google Analytics