Lucene IndexSearcher 总是返回 20 个 ScoreDocs



你好,我有这样一段代码

IndexSearcher iSearcher = new IndexSearcher(dir);
TopDocs docs = iSearcher.search(parsedQuery,filter, 9);

我总是得到 20 个记分文档。谁能帮忙?

1)你总是得到20个ScoreDocs吗?由于您的搜索结果限制为 9 个 ScoreDocs,我对"20 个 ScoreDocs"感到好奇。

2)您是否验证过您的索引包含Lucene术语,这些术语将导致超过20个ScoreDocs?在更改索引策略以在执行任何其他测试之前使用 Luke 测试索引后,我发现它很有用。

仅仅因为 doc.scoreDocs.length == 20 并不意味着您收到了 20 个结果。您必须检查每个结果的文档 ID 是否不等于 Integer.MAX_VALUE ,这用作"此处无结果"哨兵值。所有这些要点是Lucene的典型特征 - 最小化内存分配,在这种情况下,通过重用已经分配的结果数组。

谢谢你的回答。问题实际上出在构建路径上。它不能保留现有的库,无法构建项目。这就是为什么每次我尝试更改代码并调试它时,都会使用以前构建的版本。

很抱歉误导。

最新更新