Package org.apache.lucene.facet.taxonomy
Class CachedOrdinalsReader
- java.lang.Object
-
- org.apache.lucene.facet.taxonomy.OrdinalsReader
-
- org.apache.lucene.facet.taxonomy.CachedOrdinalsReader
-
public class CachedOrdinalsReader extends OrdinalsReader
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 paralelint[]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 java.lang.StringgetIndexFieldName()Returns the indexed field name thisOrdinalsReaderis reading from.OrdinalsReader.OrdinalsSegmentReadergetReader(AtomicReaderContext context)Set current atomic reader.longramBytesUsed()How many bytes is this cache using?
-
-
-
Constructor Detail
-
CachedOrdinalsReader
public CachedOrdinalsReader(OrdinalsReader source)
Sole constructor.
-
-
Method Detail
-
getIndexFieldName
public java.lang.String getIndexFieldName()
Description copied from class:OrdinalsReaderReturns the indexed field name thisOrdinalsReaderis reading from.- Specified by:
getIndexFieldNamein classOrdinalsReader
-
getReader
public OrdinalsReader.OrdinalsSegmentReader getReader(AtomicReaderContext context) throws java.io.IOException
Description copied from class:OrdinalsReaderSet current atomic reader.- Specified by:
getReaderin classOrdinalsReader- Throws:
java.io.IOException
-
ramBytesUsed
public long ramBytesUsed()
How many bytes is this cache using?
-
-