为什么在c#中的lucenenet和java中的lucene之间的搜索时间存在巨大差异,而其他统计信息却大致可比?

问题描述

我已经用Java和dotnet实现了Lucene POC。除了搜索时间(获取匹配文档所需的时间)外,这些统计数据大致可比。 Java应用程序大约需要9-10秒,而Dotnet则需要52分钟。我已经索引了99000个文档,其中包括pdf,docs,txt等。对两个POC的索引都在同一文件上执行。是由于java版本优越而导致搜索时间上的差异,还是我的lucenedotnet编码出现错误

解决方法

此问题也已作为问题提交至lucene.NET存储库。对于StackOverflow上有关Lucene.NET 4.8 Beta性能的文档,我将引用一位开发人员jeme的回复:

这肯定听起来有点可疑,我们有一个索引,其中包含超过一百万个文档,每个文档包含数千个字段。 如果我进行自由文本搜索(意味着它访问所有字段),并且以通配符(例如 a )开头和结尾(这可能是我能想到的最坏的情况),则只需要花费〜50秒,包括加载搜索产生的实际9兆字节数据,并通过网络将其返回。 (不完全令人满意,但考虑到我只是针对索引+导线的惩罚,这是可以理解的)...

根据进一步的研究,在使用Lucene.NET的3.03版本而不是4.8 Beta时遇到了此问题。目前尚不清楚此开发人员引用的性能问题与Lucene.NET 3.03源代码还是项目特定的实现源代码有关。

您可以在此处了解更多信息:https://github.com/apache/lucenenet/issues/333#issuecomment-685039718