文档数量:400_000
文档号集合:[0, 400_000)
LeafReaderContext:段1
段1(partition-0)
文档数量:400_000
文档号集合:[400_000, 800_000)
LeafReaderContext:段1
段1(partition-1)
文档数量:400_000
文档号集合:[800_000, 120_000)
LeafReaderContext:段1
段1(partition-2)
文档数量:400_000
文档号集合:[120_000, 160_000)
LeafReaderContext:段1
段1(partition-3)
文档数量:400_000
文档号集合:[160_000, 200_000)
LeafReaderContext:段1
段1(partition-4)
LeafReaderContextPartition
LeafReaderContextPartition
LeafReaderContextPartition
LeafReaderContextPartition
LeafReaderContextPartition
Thread
Thread
Thread
Thread
Thread
抢占临界区
抢占失败
抢占成功
抢占失败
抢占失败
抢占失败
阻塞等待抢占成功的
线程通知
阻塞等待抢占成功的
线程通知
阻塞等待抢占成功的
线程通知
阻塞等待抢占成功的
线程通知
0
获取段1中满足查询条件文档总数countSum
Weight#count
0
0
0
Reduce
count = 0 + countSum + 0 + 0 + 0
从文档号集合中[0, 400_000)中统计满足查询条件的文档总数count0
从文档号集合中[400_000, 800_000)中统计满足查询条件的文档总数count1
从文档号集合中[400_000, 800_000)中统计满足查询条件的文档总数count2
从文档号集合中[400_000, 800_000)中统计满足查询条件的文档总数count3
从文档号集合中[400_000, 800_000)中统计满足查询条件的文档总数count4
Collector
Collector
Collector
Collector
Collector
Reduce
count = count0 + count1 + count2 + count 3 + count 4
判断选择方式一或方式二统计count
将结果通知给其他线程
方式一:Weight#count
方式二:Collector