开始

开始

方法二

DirectoryReader.openIfChanged(DirectoryReader oldReader, IndexCommit commit)

IndexWriter

是否为空?

u125_seg0 u125_seg1 u125_seg2 u125_seg3
u126_seg0 u126_seg1 u126_seg2 u126_seg3

方法一

DirectoryReader.openIfChanged(DirectoryReader oldReader)

开始

IndexWriter

是否为空?

u130_seg0 u130_seg1 u130_seg2 u130_seg3

indexCommit

是否为空?

根据Directory判断

索引是否发生变化?

u135_seg0 u135_seg1 u135_seg2
u136_seg0 u136_seg1 u136_seg2

方法一

DirectoryReader.openIfChanged(DirectoryReader oldReader)

返回null

结束

u140_seg0 u140_seg1
u141_seg0 u141_seg1 u141_seg2 u141_seg3
u142_seg0 u142_seg1 u142_seg2

获得所有段的信息集合

SegmentInfos

返回新的

StandardDirectoryReader

u146_seg0 u146_seg1

开始

方法二

DirectoryReader.openIfChanged(DirectoryReader oldReader, IndexCommit commit)

IndexWriter

是否为空?

indexCommit

是否为空?

返回null

u154_seg0 u154_seg1 u154_seg2 u154_seg3
u155_seg0 u155_seg1 u155_seg2

segment_N文件

是否一致?

u157_seg0 u157_seg1 u157_seg2

结束

u160_seg0 u160_seg1
u161_seg0 u161_seg1 u161_seg2 u161_seg3
u162_seg0 u162_seg1 u162_seg2

获得所有段的信息集合

SegmentInfos

返回新的

StandardDirectoryReader

u167_seg0 u167_seg1

找出变更的LeafReader

u169_seg0 u169_seg1
u170_seg0 u170_seg1

找出变更的LeafReader

u172_seg0 u172_seg1
u173_seg0 u173_seg1