/** * Called by FacetComponent.countFacets which is in turn called by FC's impl of {@link * org.apache.solr.handler.component.SearchComponent#handleResponses(ResponseBuilder, * ShardRequest)}. */ @SuppressWarnings("unchecked") public static void distribHandleResponse( LinkedHashMap<String, HeatmapFacet> heatmapFacets, NamedList srsp_facet_counts) { NamedList<NamedList<Object>> facet_heatmaps = (NamedList<NamedList<Object>>) srsp_facet_counts.get(RESPONSE_KEY); if (facet_heatmaps == null) { return; } // (should the caller handle the above logic? Arguably yes.) for (Map.Entry<String, NamedList<Object>> entry : facet_heatmaps) { String fieldKey = entry.getKey(); NamedList<Object> shardNamedList = entry.getValue(); final HeatmapFacet facet = heatmapFacets.get(fieldKey); if (facet == null) { log.error("received heatmap for field/key {} that we weren't expecting", fieldKey); continue; } facet.counts = addPngToIntArray((byte[]) shardNamedList.remove("counts_" + FORMAT_PNG), facet.counts); if (facet.namedList == null) { // First shard facet.namedList = shardNamedList; } else { assert facet.namedList.equals(shardNamedList); } } }
/** Parses request to "HeatmapFacet" instances. */ public static LinkedHashMap<String, HeatmapFacet> distribParse( SolrParams params, ResponseBuilder rb) { final LinkedHashMap<String, HeatmapFacet> heatmapFacets = new LinkedHashMap<>(); final String[] heatmapFields = params.getParams(FacetParams.FACET_HEATMAP); if (heatmapFields != null) { for (String heatmapField : heatmapFields) { HeatmapFacet facet = new HeatmapFacet(rb, heatmapField); heatmapFacets.put(facet.getKey(), facet); } } return heatmapFacets; }