Class StatsCache

  • All Implemented Interfaces:
    PluginInfoInitialized
    Direct Known Subclasses:
    ExactStatsCache, LocalStatsCache

    public abstract class StatsCache
    extends Object
    implements PluginInfoInitialized
    This class represents a cache of global document frequency information for selected terms. This information is periodically updated from all shards, either through scheduled events of some kind, or on every request when there is no global stats available for terms involved in the query (or if this information is stale due to changes in the shards).

    There are instances of this class at the aggregator node (where the partial data from shards is aggregated), and on each core involved in a shard request (where this data is maintained and updated from the central cache).

    • Constructor Detail

      • StatsCache

        public StatsCache()
    • Method Detail

      • retrieveStatsRequest

        public abstract ShardRequest retrieveStatsRequest​(ResponseBuilder rb)
        Creates a ShardRequest to retrieve per-shard stats related to the current query and the current state of the requester's StatsCache.
        Parameters:
        rb - contains current request
        Returns:
        shard request to retrieve stats for terms in the current request, or null if no additional request is needed (e.g. if the information in global cache is already sufficient to satisfy this request).
      • returnLocalStats

        public abstract void returnLocalStats​(ResponseBuilder rb,
                                              SolrIndexSearcher searcher)
        Prepare a local (from the local shard) response to a "retrieve stats" shard request.
        Parameters:
        rb - response builder
        searcher - current local searcher
      • mergeToGlobalStats

        public abstract void mergeToGlobalStats​(SolrQueryRequest req,
                                                List<ShardResponse> responses)
        Process shard responses that contain partial local stats. Usually this entails combining per-shard stats for each term.
        Parameters:
        req - query request
        responses - responses from shards containing local stats for each shard
      • receiveGlobalStats

        public abstract void receiveGlobalStats​(SolrQueryRequest req)
        Receive global stats data from the master and update a local cache of stats with this global data. This event occurs either as a separate request, or together with the regular query request, in which case this method is called first, before preparing a QueryCommand to be submitted to the local SolrIndexSearcher.
        Parameters:
        req - query request with global stats data
      • sendGlobalStats

        public abstract void sendGlobalStats​(ResponseBuilder rb,
                                             ShardRequest outgoing)
        Prepare global stats data to be sent out to shards in this request.
        Parameters:
        rb - response builder
        outgoing - shard request to be sent
      • get

        public abstract StatsSource get​(SolrQueryRequest req)
        Prepare local StatsSource to provide stats information to perform local scoring (to be precise, to build a local Weight from the query).
        Parameters:
        req - query request
        Returns:
        an instance of StatsSource to use in creating a query Weight