在我的 Web 应用程序支持搜索结果的分页显示,我已将 Lucene 从版本 3.5 升级到 4.4。现在IndexSearcher.search
在我搜索文档时返回已删除的文档:
TopDocs results = searcher.search(query, filter, pageStart + pageSize);
int totalCount = results.totalHits;
ScoreDoc[] hits = results.scoreDocs;
int pageEnd = Math.min(results.totalHits, pageStart + pageSize);
List<Long> rowIdList = new ArrayList<Long>(Math.max(pageEnd - pageStart, 0));
for (int i = pageStart; i < pageEnd; i++) {
Document doc = searcher.doc(hits[i].doc);
rowIdList.add(Long.parseLong(doc.get("rowid")));
}
结果,我有重复的行 ID 会rowIdList
导致以后出现问题。我现在添加了代码以从rowIdList
. 除了显示总匹配数(通常太高)外,这很有效。此外,搜索结果的页面通常显示的匹配项少于应有的匹配项。
在 Lucene 4.4 中,如何更正创建没有删除文档的命中列表的方法,以使检索到的命中数和总命中数正确?