public class CachedOrdinalsReader extends OrdinalsReader
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).
Modifier and Type | Class and Description |
---|---|
static class |
CachedOrdinalsReader.CachedOrds
Holds the cached ordinals in two paralel
int[] arrays. |
OrdinalsReader.OrdinalsSegmentReader
Constructor and Description |
---|
CachedOrdinalsReader(OrdinalsReader source)
Sole constructor.
|
Modifier and Type | Method and Description |
---|---|
String |
getIndexFieldName()
Returns the indexed field name this
OrdinalsReader is reading from. |
OrdinalsReader.OrdinalsSegmentReader |
getReader(AtomicReaderContext context)
Set current atomic reader.
|
long |
ramBytesUsed()
How many bytes is this cache using?
|
public CachedOrdinalsReader(OrdinalsReader source)
public String getIndexFieldName()
OrdinalsReader
OrdinalsReader
is reading from.getIndexFieldName
in class OrdinalsReader
public OrdinalsReader.OrdinalsSegmentReader getReader(AtomicReaderContext context) throws IOException
OrdinalsReader
getReader
in class OrdinalsReader
IOException
public long ramBytesUsed()
Copyright © 2010 - 2020 Adobe. All Rights Reserved