private Metric.Context getRelevanceMetricContext(Execution execution, Query query) {
        String chain = execution.chain().getId().stringValue();
        String rankProfile = query.getRanking().getProfile();
        Map<String, Metric.Context> chainContext = relevanceContexts.get(chain);  // CopyOnWriteHashMap - don't use computeIfAbsent
        if (chainContext == null) {
            chainContext = new CopyOnWriteHashMap<>();
            relevanceContexts.put(chain, chainContext);
        }
        Metric.Context metricContext = chainContext.get(rankProfile);
        if (metricContext == null) {
            metricContext = createRelevanceMetricContext(chain, rankProfile);
            chainContext.put(rankProfile, metricContext);
        }
        return metricContext;
    }
<p>A searcher to gather statistics such as queries completed and query latency.  There
may be more than 1 StatisticsSearcher in the Searcher chain, each identified by a
Searcher ID.  The statistics accumulated by all StatisticsSearchers are stored
in the singleton StatisticsManager object. </p>
<p>
TODO: Fix events to handle more than one of these searchers properly.

@author Gene Meyers
@author Steinar Knutsen
@author bergum
container-search/src/main/java/com/yahoo/prelude/statistics/StatisticsSearcher.java