0

你好我有这么一段代码

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

我总是得到 20 个 scoredocs。有人可以帮忙吗?

4

3 回答 3

0

1) 您是否总是准确地返回 20 个 ScoreDocs?由于您的搜索将结果限制为 9 个 ScoreDocs,我对“20 个 ScoreDocs”感到好奇。

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

于 2012-04-13T17:25:32.383 回答
0

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

抱歉误导。

于 2012-04-17T08:01:29.317 回答
0

仅仅因为 doc.scoreDocs.length == 20 并不意味着您收到了 20 个结果。您必须检查每个单独结果的 doc id 是否等于Integer.MAX_VALUE,它用作“此处无结果”标记值。这一切的重点是 Lucene 的典型特征——最小化内存分配,在这种情况下通过重用已经分配的结果数组。

于 2012-04-14T13:42:57.240 回答