Package org.apache.solr.search.facet
Class UniqueBlockAgg.UniqueBlockSlotAcc
- java.lang.Object
-
- org.apache.solr.search.facet.SlotAcc
-
- org.apache.solr.search.facet.UniqueBlockAgg.UniqueBlockSlotAcc
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
- Enclosing class:
- UniqueBlockAgg
protected static class UniqueBlockAgg.UniqueBlockSlotAcc extends SlotAcc
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.solr.search.facet.SlotAcc
SlotAcc.DoubleFuncSlotAcc, SlotAcc.FuncSlotAcc, SlotAcc.IntSlotAcc, SlotAcc.LongFuncSlotAcc, SlotAcc.Resizer, SlotAcc.SlotContext
-
-
Field Summary
Fields Modifier and Type Field Description protected int[]
lastSeenValuesPerSlot
-
Fields inherited from class org.apache.solr.search.facet.SlotAcc
currentDocBase, currentReaderContext, fcontext
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
UniqueBlockSlotAcc(FacetContext fcontext, SchemaField field, int numSlots)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
calcCounts()
void
collect(int doc, int slotNum, IntFunction<SlotAcc.SlotContext> slotContext)
All subclasses must override this method to collect documents.protected void
collectOrdToSlot(int slotNum, int ord)
int
compare(int slotA, int slotB)
long
getNonShardValue(int slot)
Returns the current slot value as long This is used to get non-sharded valueObject
getValue(int slot)
protected org.apache.lucene.util.BytesRef
lookupOrd(int ord)
void
reset()
Called to reset the acc to a fresh state, ready for reusevoid
resetIterators()
Typically called from setNextReader to reset docValue iteratorsvoid
resize(SlotAcc.Resizer resizer)
void
setNextReader(org.apache.lucene.index.LeafReaderContext readerContext)
NOTE: this currently detects when it is being reused and calls resetIterators by comparing reader ords with previous calls to setNextReader.
-
-
-
Constructor Detail
-
UniqueBlockSlotAcc
protected UniqueBlockSlotAcc(FacetContext fcontext, SchemaField field, int numSlots) throws IOException
- Throws:
IOException
-
-
Method Detail
-
collectOrdToSlot
protected void collectOrdToSlot(int slotNum, int ord)
-
calcCounts
public void calcCounts()
-
reset
public void reset() throws IOException
Description copied from class:SlotAcc
Called to reset the acc to a fresh state, ready for reuse- Throws:
IOException
-
resize
public void resize(SlotAcc.Resizer resizer)
-
getValue
public Object getValue(int slot) throws IOException
- Throws:
IOException
-
getNonShardValue
public long getNonShardValue(int slot)
Returns the current slot value as long This is used to get non-sharded value
-
resetIterators
public void resetIterators() throws IOException
Description copied from class:SlotAcc
Typically called from setNextReader to reset docValue iterators- Overrides:
resetIterators
in classSlotAcc
- Throws:
IOException
-
lookupOrd
protected org.apache.lucene.util.BytesRef lookupOrd(int ord) throws IOException
- Throws:
IOException
-
setNextReader
public void setNextReader(org.apache.lucene.index.LeafReaderContext readerContext) throws IOException
Description copied from class:SlotAcc
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.- Overrides:
setNextReader
in classSlotAcc
- Throws:
IOException
-
collect
public void collect(int doc, int slotNum, IntFunction<SlotAcc.SlotContext> slotContext) throws IOException
Description copied from class:SlotAcc
All subclasses must override this method to collect documents. This method is called by the default impl ofSlotAcc.collect(DocSet, int, IntFunction)
but it's also neccessary if this accumulator is used for sorting.- Specified by:
collect
in classSlotAcc
- Parameters:
doc
- Single Segment docId (relative to the currentLeafReaderContext
to collectslotNum
- The slot number to collect this document inslotContext
- A callback that can be used for Accumulators that would like additional info about the current slot -- theIntFunction
is only garunteed to be valid for the current slot, and theSlotAcc.SlotContext
returned is only valid for the duration of thecollect()
call.- Throws:
IOException
-
-