[英]Lucene: How to get real-time index information during indexing? (Index size and term count)
我想在索引過程中實時獲取有關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;
}
首先,索引文件夾為空。 每當Lucene完成對文本文件的索引時,我都會輸出term_number
和index_MB_size
每個索引文件大約10MB,全部大約600MB)。 這樣我得到約60對結果。 但我悲哀地發現60對的2個變量始終為0。只有當索引段結束時,統計信息將顯示一個非零的結果。
我猜這是由於CheckIndex類只能在索引完成后才能正常工作而引起的。 但是我還沒有檢查。
如何實時獲取信息? 此外,CheckIndex過程確實很耗時,是否還有其他更好的方法來獲取信息的兩個方面(索引大小和術語編號)?
我終於在《 Lucene In Action 2nd Edition 》一書中找到了答案。
這是因為IndexReader
和CheckIndex
僅在IndexWriter
調用commit()
方法之后才能看到索引的更改。 Commit與Flush非常不同,因為flush僅將所有緩沖的數據刷新到磁盤,而Commit
將首先進行刷新 ,然后使所有更改對IndexReader
可見。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.