Package org.apache.lucene.facet.taxonomy
Class CachedOrdinalsReader
java.lang.Object
org.apache.lucene.facet.taxonomy.OrdinalsReader
org.apache.lucene.facet.taxonomy.CachedOrdinalsReader
A per-segment cache of documents' facet ordinals. Every
CachedOrdinalsReader.CachedOrds holds the ordinals in a raw
int[], 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.CachedOrds is 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 DocValuesFormat that 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 ClassesModifier and TypeClassDescriptionstatic final classHolds the cached ordinals in two paralelint[]arrays.Nested classes/interfaces inherited from class org.apache.lucene.facet.taxonomy.OrdinalsReader
OrdinalsReader.OrdinalsSegmentReader -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionReturns the indexed field name thisOrdinalsReaderis reading from.getReader(AtomicReaderContext context) Set current atomic reader.longHow many bytes is this cache using?
-
Constructor Details
-
CachedOrdinalsReader
Sole constructor.
-
-
Method Details
-
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 IOException Description copied from class:OrdinalsReaderSet current atomic reader.- Specified by:
getReaderin classOrdinalsReader- Throws:
IOException
-
ramBytesUsed
public long ramBytesUsed()How many bytes is this cache using?
-