Lucene:如何在索引过程中获得实时索引信息?(索引大小和项数)



我想在索引过程中实时获取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_numberindex_MB_size(每个大约10MB,全部大约600MB)。所以我得到了大约60双的结果。但我很遗憾地发现60对中的2个变量总是0。只有当索引段完成时,统计信息才会显示非零的结果。

我猜这是由于CheckIndex类只能在索引完成后才能正确工作。但是我还没有检查过。

如何实时获取信息?此外,CheckIndex过程非常耗时,是否有其他更好的方法来获取这两个方面的信息(索引大小和项数)?

我终于在Lucene in Action第二版找到了答案。

这是因为IndexReaderCheckIndex只能看到IndexWriter调用commit()方法后索引的变化。CommitFlush非常不同,因为Flush只会将所有缓存的数据刷新到磁盘,而Commit会先执行Flush,然后让IndexReader看到所有的更改。

最新更新