Class SlotAcc

java.lang.Object
org.apache.solr.search.facet.SlotAcc
All Implemented Interfaces:
Closeable, AutoCloseable
Direct Known Subclasses:
DocValuesAcc, SlotAcc.FuncSlotAcc, SlotAcc.IntSlotAcc, UnInvertedFieldAcc, UniqueBlockAgg.UniqueBlockSlotAcc

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 Details

    • fcontext

      protected final FacetContext fcontext
    • currentReaderContext

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

      protected int currentDocBase
  • Constructor Details

  • Method Details

    • toString

      public String toString()
      Overrides:
      toString in class Object
    • 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

      public abstract void collect(int doc, int slot, IntFunction<SlotAcc.SlotContext> slotContext) throws IOException
      All subclasses must override this method to collect documents. This method is called by the default impl of collect(DocSet, int, IntFunction) but it's also neccessary if this accumulator is used for sorting.
      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)
    • getValue

      public abstract Object getValue(int slotNum) throws IOException
      Throws:
      IOException
    • setValues

      public void setValues(org.apache.solr.common.util.SimpleOrderedMap<Object> bucket, int slotNum) throws IOException
      Throws:
      IOException
    • 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
    • resize

      public abstract void resize(SlotAcc.Resizer resizer)
    • close

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException