通常の方法でインデックスを作成しています:
var directory = FSDirectory.Open(...);
var analyzer = ...
var indexWriter = new IndexWriter(directory, analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED);
indexWriter.SetWriteLockTimeout(30000);
indexWriter.AddDocument(doc1);
indexWriter.AddDocument(doc2);
indexWriter.AddDocument(...);
indexWriter.Commit();
indexWriter.Optimize();
indexWriter.Close();
これにより、5.8mbのインデックスが作成されます
ここで、2 つのドキュメントを正確に更新する必要があります..それぞれに 1 つの単語を追加して..インデックスのサイズをごくわずかに増やすか、まったく増やす必要はありません。
var indexWriter = new IndexWriter(directory, analyzer, false, IndexWriter.MaxFieldLength.UNLIMITED);
indexWriter.SetWriteLockTimeout(30000);
indexWriter.UpdateDocument(doc1);
indexWriter.UpdateDocument(doc2);
indexWriter.Commit();
**indexWriter.Optimize();**
indexWriter.Close();
この操作は、インデックスが以前は 5.8 MB だったサイズの _0.cfs ファイルを残すという方法で、インデックスのサイズを 2 倍にし、_2.xxx ファイルに同じサイズのまったく新しいインデックスを作成します。 1 つの単語を含む 2 つのドキュメントを変更すると、2 倍になります。
操作を繰り返すと、これも続行されます...したがって、永遠に2倍になります。
私の考えでは、最適化呼び出しはそれを最適化し、これらのようなことを引き起こさないようにする必要がありますか?
インデックスが2倍にならないようにするにはどうすればよいですか?
サンクス!