Class SlotAcc

  • All Implemented Interfaces:
    Closeable, AutoCloseable

    public abstract class SlotAcc
    extends Object
    implements Closeable
    Accumulates statistics separated by a slot number. There is a separate statistic per slot. The slot is usually an ordinal into a set of values, e.g. tracking a count frequency per term. Sometimes there doesn't need to be a slot distinction, in which case there is just one nominal slot.
    • Field Detail

      • fcontext

        protected final org.apache.solr.search.facet.FacetContext fcontext
      • currentReaderContext

        protected org.apache.lucene.index.LeafReaderContext currentReaderContext
      • currentDocBase

        protected int currentDocBase
    • Constructor Detail

      • SlotAcc

        public SlotAcc​(org.apache.solr.search.facet.FacetContext fcontext)
    • Method Detail

      • setNextReader

        public void setNextReader​(org.apache.lucene.index.LeafReaderContext readerContext)
                           throws IOException
        NOTE: this currently detects when it is being reused and calls resetIterators by comparing reader ords with previous calls to setNextReader. For this reason, current users must call setNextReader in segment order. Failure to do so will cause worse performance.
        Throws:
        IOException
      • collect

        @Deprecated
        public void collect​(int doc,
                            int slot,
                            IntFunction<SlotAcc.SlotContext> slotContext)
                     throws IOException
        Deprecated.
        All subclasses should override this method, for backcompatability the default implementaion delegates to the (deprecated) collect(int,int)
        Parameters:
        doc - Single Segment docId (relative to the current LeafReaderContext to collect
        slot - The slot number to collect this document in
        slotContext - A callback that can be used for Accumulators that would like additional info about the current slot -- the IntFunction is only garunteed to be valid for the current slot, and the SlotAcc.SlotContext returned is only valid for the duration of the collect() call.
        Throws:
        IOException
      • collect

        public int collect​(DocSet docs,
                           int slot,
                           IntFunction<SlotAcc.SlotContext> slotContext)
                    throws IOException
        Bulk collection of all documents in a slot. The default implementation calls collect(int,int,IntFunction)
        Parameters:
        docs - (global) Documents to collect
        slot - The slot number to collect these documents in
        slotContext - A callback that can be used for Accumulators that would like additional info about the current slot -- the IntFunction is only garunteed to be valid for the current slot, and the SlotAcc.SlotContext returned is only valid for the duration of the collect() call.
        Throws:
        IOException
      • compare

        public abstract int compare​(int slotA,
                                    int slotB)
      • reset

        public abstract void reset()
                            throws IOException
        Called to reset the acc to a fresh state, ready for reuse
        Throws:
        IOException
      • resetIterators

        protected void resetIterators()
                               throws IOException
        Typically called from setNextReader to reset docValue iterators
        Throws:
        IOException