2017-09-18 9 views
0

私はかなりluceneに新しいです。私はセグメントのマージプロセスを理解しようとしています。私はメソッドの最適化(そのインスタンスで利用可能なすべてのLuceneインデックスセグメントをマージする)を見つけました。 私の正確な質問は、最適化はセグメントのすべてのレベルをマージするのですか&は1つの複雑なセグメントを作成しますか? 最新バージョンのLucene(Lucene 6.5など)の代替品ですか? インデックス作成プロセスの後に常にoptimizeメソッドを呼び出すとよいでしょうか?インデックスは常に1つのセグメントを持ち、検索は高速になるでしょうか?最適化メソッドとは何ですか? luceneの最新バージョンで最適化メソッドの代替手段

答えて

1

まず、セグメントを常にセグメントにマージする必要はありません。設定することができます。原則として、セグメントのマージ/インデックスの最適化のアイデアは、Luceneでの削除の実装から来ています。 Luceneは文書を削除しないで、むしろ削除のためにそれらをマークします。次に、新しい文書が新しいセグメントに入っています。

Luceneには用語辞書や他の多くのようなセグメントごとのファイルがたくさんあるので、それらをマージするとヒープが減り、検索が高速になります。しかし、通常、マージのプロセスはそれほど速くはありません。

全体的に、新しいドキュメントのインデックスを作成し、すべてを実行しないときは、マージ/最適化の呼び出しのバランスが必要です。見るべきことの1つはMergePolicyで、さまざまなタイプのマージをさまざまな戦略で定義しています。あなたが(私が疑っている)あなたに適したものが見つからない場合は、あなたのニーズに合ったものを実装することができます。 Luceneの6.5にあなたが

public void forceMerge(int maxNumSegments)IndexWriterクラスで使用することができたよう

関連する問題