我对 lucene 很陌生,我正在尝试了解段合并过程。我遇到了优化方法(它将合并该实例中所有可用的 Lucene 索引段)。我的确切问题是,Optimize 是否合并所有级别的细分并创建一个复杂的细分?最新版本的 Lucene(比如 Lucene 6.5)中的替代品?在索引过程之后总是调用优化方法,这样我的索引总是有一个段并且搜索会很快吗?
问问题
244 次
1 回答
1
首先,不需要总是将段合并为一个段。可以配置。原则上,合并段/优化索引的想法来自于 Lucene 中删除的实现。Lucene 不会删除文档,而是将它们标记为删除,第二,新文档正在进入新的段。
Lucene 有很多分段文件——比如术语字典和许多其他文件,因此将它们合并在一起将减少堆并加快搜索速度。但是,通常合并的过程并不那么快。
总体而言,您需要在每次索引新文档时调用合并/优化和不做所有事情之间取得平衡。要看的一件事是MergePolicy,它定义了具有不同策略的不同类型的合并。如果你找不到任何适合你的东西(我怀疑),你可以根据你的需要实施一个。
与 Lucene 6.5 一样,您可以使用
public void forceMerge(int maxNumSegments)
类IndexWriter
的
于 2017-09-19T10:47:31.250 回答