值得一提的是, 每一个shard的对应的是一份完整的lucene索引, 是可以自己直接写lucene代码读取的....在SolrCloud中, shard和replica是配合使用的, 比如一个collection可以分3个shard, 然后每个shard可以分2个replica, 每个replica对应的就是一份lucene...因此ClientNode最终会收到20*3=60个文档ID, 这60个文档ID是在各自shard中排名前20的文档, 然后ClientNode会根据score在这60个文档中找出得分最高的20个文档,...执行所有components的process()方法
QueryComponent在这个阶段完成了真实的搜索lucene索引的操作....然而这两次请求中间是有一个时间窗口的, 在这个时间窗口里, 各分片的索引可能会发生改变, 比如在获取ids阶段根据termA召回了一个文档1, 然后在获取文档1的返回字段的时候, 可能文档1已经被更新了