文档数量: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

将结果通知给其他线程

u359_seg0 u359_seg1 u359_seg2
u360_seg0 u360_seg1 u360_seg2
u361_seg0 u361_seg1 u361_seg2
u362_seg0 u362_seg1 u362_seg2
u363_seg0 u363_seg1 u363_seg2
u364_seg0 u364_seg1 u364_seg2
u365_seg0 u365_seg1 u365_seg2
u366_seg0 u366_seg1 u366_seg2
u367_seg0 u367_seg1 u367_seg2
u368_seg0 u368_seg1 u368_seg2
u369_seg0 u369_seg1
u370_seg0 u370_seg1

方式一:Weight#count

方式二:Collector