0

lucene 3.x から 4.1.0 に移行しました。新しいインデックスを作成した後、インデックス ディレクトリにさらに多くのファイルがあることに気付きました。lucene 3 は IndexWriter.optimize() を使用してファイルを折りたたみます。v4の後継はIndexWriter.forceMerge(int maxNumSegments)です。maxNumSegments に異なる値を指定して forceMerge を試しましたが、常に同じインデックス ファイルが得られます。ファイルが 1 つ、または少なくとも 1 つ以下のインデックス ファイルにマージされることを期待しています。私が間違っている?あなたはそれを行う方法を知っていますか?

4

2 に答える 2

6

イデオロギー(ファイルが少ないほど良い)とは別に、必要なファイルが少ないという実際的な理由はありますか?特定のインデックスの全体的なバイト数を提供することはほぼ同じですが、違いは何ですか?

最適化が非効率的だったために削除された理由:検索パフォーマンスの低下、結果の負荷の急上昇など。複数のセグメントでの検索のパフォーマンスが向上し、その必要性.optimize() はもはや正当化されません。LuceneはTieredMergePolicy代わりに、負荷のバランスをうまく取り、この問題を別の角度から解決する方法を使用しています。

于 2013-01-30T09:59:18.577 に答える
3

すべての論理インデックス ファイルを 1 つの実際のファイルに格納する Lucene の複合ファイル形式を探しているかもしれません。MergePolicy.setUseCompoundFile(true)を参照してください。

于 2013-01-30T10:39:49.533 に答える