インデックス作成プロセス中に Lucene のインデックスに関する情報をリアルタイムで取得したいと考えています。したがって、次のように、コードで CheckIndex クラスを使用します。
CheckIndex.Status indexStatus = checkIndex.checkIndex();
Iterator<CheckIndex.Status.SegmentInfoStatus> iterator = indexStatus.segmentInfos.iterator();
CheckIndex.Status.SegmentInfoStatus temp = null;
while(iterator.hasNext()) {
temp = iterator.next();
term_number += temp.termIndexStatus.termCount;
index_MB_size += temp.sizeMB;
}
最初は、index フォルダーは空です。Lucene がテキスト ファイル (それぞれ約 10MB、すべて約 600MB) のインデックス作成を終了するたびに出力term_number
します。index_MB_size
したがって、約60ペアの結果が得られます。しかし、悲しいことに、60 ペアの 2 つの変数が常に 0 であることがわかりました。インデックス セグメントが終了したときにのみ、統計情報はゼロ以外の結果を示します。
これは、CheckIndex クラスが正しく機能するのは、インデックス作成が完了した後であるためだと思います。しかし、私はチェックしていません。
どうすればリアルタイムで情報を取得できますか? さらに、CheckIndex プロセスは非常に時間がかかります。情報の 2 つの側面 (インデックス サイズとターム数) を取得するための他の良い方法はありますか?