合并索引 Lucene .NET 不会产生与直接写入索引相同的结果

Merged indexes Lucene .NET does not yield same results as directly written index

我一直在尝试一些方法来对我们的 Lucene 索引进行异步初始化。

其中一个 是将我们的数据分批索引到单独的索引中,然后将它们合并到一个更大的索引中。

问题是当任务完全完成时,我们的索引似乎不会产生相同的结果。

现在许多特定查询将产生相同数量的结果,例如 内容类型:通知

A 所有文档选择器也产生相同的结果。 (:)

但是如果我进行通配符搜索,例如'c*' 从碎片索引构建然后合并的索引产生 0 个结果,但是一次写入的索引可以产生数十万个结果( 是公平的,因为 c* 是一个相当广泛的搜索) ...

是否需要对合并索引做任何事情,或者在处理它们时是否存在一些差异?...我曾尝试 运行 优化它们,但没有成功。

在不知道任何细节的情况下...我会说你在这个螺母上使用的锤子太大了:)

我使用过批量创建的索引(数以百万计的文档)和增量索引(数百万文档每天更新 100K+)。这两种方法都只在单个索引目录上使用单个 IndexWriter。

诀窍是通过仅偶尔更新 IndexReader 来适当地调整 IW MergePolicy and/or 以调整搜索器 "latency"。这本质上是 "caches" 一段时间内的 IR,它以有点过时为代价提高了搜索速度。根据预期调整周期。

如果这仍然是一个问题,我可以扩展方法