Package org.apache.lucene.facet.taxonomy
Class CachedOrdinalsReader
- java.lang.Object
-
- org.apache.lucene.facet.taxonomy.OrdinalsReader
-
- org.apache.lucene.facet.taxonomy.CachedOrdinalsReader
-
- All Implemented Interfaces:
Accountable
public class CachedOrdinalsReader extends OrdinalsReader implements Accountable
A per-segment cache of documents' facet ordinals. EveryCachedOrdinalsReader.CachedOrdsholds the ordinals in a rawint[], and therefore consumes as much RAM as the total number of ordinals found in the segment, but saves the CPU cost of decoding ordinals during facet counting.NOTE: every
CachedOrdinalsReader.CachedOrdsis limited to 2.1B total ordinals. If that is a limitation for you then consider limiting the segment size to fewer documents, or use an alternative cache which pages through the category ordinals.NOTE: when using this cache, it is advised to use a
DocValuesFormatthat does not cache the data in memory, at least for the category lists fields, or otherwise you'll be doing double-caching.NOTE: create one instance of this and re-use it for all facet implementations (the cache is per-instance, not static).
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classCachedOrdinalsReader.CachedOrdsHolds the cached ordinals in two parallelint[]arrays.-
Nested classes/interfaces inherited from class org.apache.lucene.facet.taxonomy.OrdinalsReader
OrdinalsReader.OrdinalsSegmentReader
-
-
Constructor Summary
Constructors Constructor Description CachedOrdinalsReader(OrdinalsReader source)Sole constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Collection<Accountable>getChildResources()StringgetIndexFieldName()Returns the indexed field name thisOrdinalsReaderis reading from.OrdinalsReader.OrdinalsSegmentReadergetReader(LeafReaderContext context)Set current atomic reader.longramBytesUsed()
-
-
-
Constructor Detail
-
CachedOrdinalsReader
public CachedOrdinalsReader(OrdinalsReader source)
Sole constructor.
-
-
Method Detail
-
getIndexFieldName
public String getIndexFieldName()
Description copied from class:OrdinalsReaderReturns the indexed field name thisOrdinalsReaderis reading from.- Specified by:
getIndexFieldNamein classOrdinalsReader
-
getReader
public OrdinalsReader.OrdinalsSegmentReader getReader(LeafReaderContext context) throws IOException
Description copied from class:OrdinalsReaderSet current atomic reader.- Specified by:
getReaderin classOrdinalsReader- Throws:
IOException
-
ramBytesUsed
public long ramBytesUsed()
- Specified by:
ramBytesUsedin interfaceAccountable
-
getChildResources
public Collection<Accountable> getChildResources()
- Specified by:
getChildResourcesin interfaceAccountable
-
-