我正在致力于在 Lucene 中实现分页。目前我已经使用 TopDocs 实现了它,并且我经常得到重复的结果。我究竟做错了什么?这里的index是页码,我从1开始,每次搜索后加1,resultSize是请求的对象数量。
代码:
Directory directory = FSDirectory.open(path);
IndexReader indexReader = DirectoryReader.open(directory);
IndexSearcher indexSearcher = new IndexSearcher(indexReader);
Query query = new WildcardQuery(new Term("contents", "*" + text + "*"));
TopScoreDocCollector collector = TopScoreDocCollector.create(9999);
indexSearcher.search(query, collector);
TopDocs topDocs = collector.topDocs(index-1, resultSize);
for (ScoreDoc scoreDoc : topDocs.scoreDocs) {
Document document = indexSearcher.doc(scoreDoc.doc);
IndexableField value = document.getField("score");
}
谢谢。
最佳答案
第一个参数是起始索引,而不是页面。您需要将其乘以每页:
TopDocs topDocs = Collector.topDocs((index-1) * perPage, resultSize);
关于java - 卢塞恩 : Pagination returning duplicates,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55647561/