开始
开始
方法二
DirectoryReader.openIfChanged(DirectoryReader oldReader, IndexCommit commit)
IndexWriter
是否为空?
indexCommit
是否为空?
根据Directory判断
索引是否发生变化?
返回null
是
是
否
方法一
DirectoryReader.openIfChanged(DirectoryReader oldReader)
segment_N文件
是否一致?
是
结束
是
否
indexCommit
是否为空?
否
获得所有段的信息集合
SegmentInfos
否
根据IndexWriter判断
索引是否发生变化?
根据IndexWriter获取新的
StandardDirectoryReader
新旧
StandardDirectoryReader
是否一致?
返回新的
StandardDirectoryReader
否
是
结束
返回null
否
是
是
否
返回新的
StandardDirectoryReader
返回新的
StandardDirectoryReader
获得所有段的信息集合
SegmentInfos
找出变更的LeafReader
找出变更的LeafReader