你好我有这样一段代码
IndexSearcher iSearcher = new IndexSearcher(dir);
TopDocs docs = iSearcher.search(parsedQuery,filter, 9);
我总是得到20个scoredocs。有人可以帮忙吗?
答案 0 :(得分:0)
1)你总是得到20个ScoreDocs吗?由于您的搜索将结果限制为9 ScoreDocs,我对'20 ScoreDocs'感到好奇。
2)您是否确认您的索引包含会导致超过20个ScoreDocs的Lucene术语?在执行任何其他测试之前,我发现在更改索引策略以使用Luke测试索引之后,我发现它很有用。
答案 1 :(得分:0)
仅仅因为doc.scoreDocs.length == 20并不意味着你收到了20个结果。您必须检查每个结果的文档ID不等于Integer.MAX_VALUE
,{{1}}用作“此处无结果”的哨兵值。所有这一切都是典型的Lucene - 最小化内存分配,在这种情况下通过重用已经分配的结果数组。
答案 2 :(得分:0)
感谢您的回答。问题实际上是在构建路径中。它可能不存在图书馆和项目无法建立。这就是为什么每次我尝试更改代码并调试它时,都会使用以前构建的版本。
很抱歉误导。