我是lucene的新手我试图理解段合并过程。我遇到了方法optimize(它将合并该实例中所有可用的Lucene索引段)。 我的确切问题是,Optimize是否合并了所有级别的段和&创造一个复杂的细分? 最新版Lucene的替代品(Lucene 6.5)? 在索引过程之后总是调用optimize方法是否好,这样我的索引总是只有一个段,搜索会很快?
答案 0 :(得分:1)
首先,不需要始终将细分合并到一个细分市场。它可以配置。原则上,合并段/优化索引的想法来自Lucene中删除的实现。 Lucene不删除文档,而是将其标记为删除,其次,新文档将进入新的部分。
Lucene有很多每段文件 - 比如术语词典和许多其他文件,因此将它们合并在一起将减少堆并使搜索速度更快。但是,通常合并的过程并不那么快。
总的来说,每次索引新文档时都需要在调用合并/优化之间取得平衡,而不是全部。要注意的一件事是MergePolicy,它定义了不同类型的合并,具有不同的策略。如果您找不到任何适合您的(我怀疑),您可以根据自己的需要实施一个。
与Lucene 6.5一样,你可以使用
public void forceMerge(int maxNumSegments)
类的 IndexWriter