/** * Merges in the count contributions from the specified shard for each. This method is recursive * if the shard data includes sub-pivots * * @see PivotFacetField#contributeFromShard * @see PivotFacetField#createFromListOfNamedLists */ public void mergeContributionFromShard( int shardNumber, ResponseBuilder rb, NamedList<Object> value) { assert null != value : "can't merge in null data"; if (!shardHasContributed(shardNumber)) { sourceShards.set(shardNumber); count += PivotFacetHelper.getCount(value); NamedList<NamedList<NamedList<?>>> stats = PivotFacetHelper.getStats(value); if (stats != null) { statsValues = PivotFacetHelper.mergeStats(statsValues, stats, rb._statsInfo); } NamedList<Number> shardQueryCounts = PivotFacetHelper.getQueryCounts(value); if (shardQueryCounts != null) { queryCounts = PivotFacetHelper.mergeQueryCounts(queryCounts, shardQueryCounts); } SimpleOrderedMap<SimpleOrderedMap<Object>> shardRanges = PivotFacetHelper.getRanges(value); if (shardRanges != null) { if (rangeCounts == null) { rangeCounts = new LinkedHashMap<>(shardRanges.size() / 2); } RangeFacetRequest.DistribRangeFacet.mergeFacetRangesFromShardResponse( rangeCounts, shardRanges); } } List<NamedList<Object>> shardChildPivots = PivotFacetHelper.getPivots(value); // sub pivot -- we may not have seen this yet depending on refinement if (null == childPivot) { childPivot = PivotFacetField.createFromListOfNamedLists(shardNumber, rb, this, shardChildPivots); } else { childPivot.contributeFromShard(shardNumber, rb, shardChildPivots); } }