我一直在尝试一些方法来对Lucene索引进行异步初始化。
其中一个女巫将我们的小批量数据索引到单独的索引中,然后将它们合并为更大的索引。
问题在于,当任务完全完成时,我们的索引似乎没有相同的结果。
现在许多特定查询会产生相同数量的结果,例如 contentType:notification
所有文档选择器也会产生相同的结果。 (:)
但如果我进行通配符搜索,例如' C *'从碎片索引构建的索引然后合并产生0个结果但是一个大写的索引可以产生几十万个结果(这是公平的,因为c *是一个相当广泛的搜索)...
是否有任何事情需要在合并的索引上完成,或者它们的处理有什么不同?...我试图对它们运行Optimize,但没有运气。
答案 0 :(得分:0)
在不知道任何细节的情况下...我会说你在这个坚果上使用了太大的锤子:)
我使用批量创建的索引(100百万的文档)和增量索引(每天100K +更新数百万个文档)。这两种方法都只在单个索引目录上使用了一个IndexWriter。
诀窍是适当地调整IW MergePolicy和/或通过仅偶尔更新IndexReader来调整搜索器“延迟”。这基本上“缓存”一段时间内的IR,这会提高搜索速度,但代价是有点过时。根据期望调整期间。
如果仍然存在问题,我可以扩展这种方法