[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重载方法很多 自己看看就知道了 |