0

何が変わったのかはわかりませんが、Lucene の実装では比較的うまく機能していました。しかし現在、インデックス ディレクトリ内のファイルの数は増え続けています。_0 ファイルから始まり、_1 ファイルが表示され、次に _2 および _3 ファイルが表示されました。開始時にそのディレクトリに既存のファイルがある場合、「作成」パラメーターの IndexWriter のコンストラクターに false を渡します。

indexWriter = new IndexWriter(azureDirectory, analyzer, (azureDirectory.ListAll().Length == 0), IndexWriter.MaxFieldLength.UNLIMITED);
if (indexWriter != null)
{
    // Set the number of segments to save in memory before writing to disk.
    indexWriter.MergeFactor = 1000;
    indexWriter.UseCompoundFile = false;
    indexWriter.SetRAMBufferSizeMB(800);
        ...
    indexWriter.Dispose(); indexWriter = null;
}

多分それは UseCompoundFile フラグに関連付けられていますか?

数分ごとに、新しい IndexWriter を作成し、10,000 個のドキュメントを処理してから、IndexWriter を破棄します。インデックスは機能しますが、Lucene の書き込みを開始する前に Azure からすべてのファイルをキャッシュ ディレクトリにコピーする AzureDirectory を使用しているため、ファイル数の増加は非常に悪いものです。

ありがとう。

4

1 に答える 1

2

これは正常な動作です。単一のインデックス セグメントが必要な場合は、いくつかのオプションがあります。

  • 複合ファイルを使用する
  • lucene LogMergePolicy3.0 のデフォルト ポリシーである を使用する場合は、MergeFactor を 1 にします。で使用するメソッドIndexWriterは、mergePolicy が のインスタンスである限り、mergePolicy.MergeFactor を呼び出す便利なメソッドであることに注意してくださいLogMergePolicy
  • インデックスを更新するたびに最適化を実行する

各更新後の低いマージ ファクターと最適化は、実行するインデックス作成の種類によっては、アプリのパフォーマンスに重大な欠点をもたらす可能性があります。

の影響を少し文書化したこのリンクを参照してMergeFactorください 。 29

于 2013-03-27T19:25:02.717 に答える