org.apache.lucene.facet.taxonomy
Class CachedOrdinalsReader

java.lang.Object
  extended by org.apache.lucene.facet.taxonomy.OrdinalsReader
      extended by org.apache.lucene.facet.taxonomy.CachedOrdinalsReader

public class CachedOrdinalsReader
extends OrdinalsReader

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
static class CachedOrdinalsReader.CachedOrds
          Holds the cached ordinals in two paralel int[] arrays.
 
Nested classes/interfaces inherited from class org.apache.lucene.facet.taxonomy.OrdinalsReader
OrdinalsReader.OrdinalsSegmentReader
 
Constructor Summary
CachedOrdinalsReader(OrdinalsReader source)
          Sole constructor.
 
Method Summary
 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?
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CachedOrdinalsReader

public CachedOrdinalsReader(OrdinalsReader source)
Sole constructor.

Method Detail

getIndexFieldName

public String getIndexFieldName()
Description copied from class: OrdinalsReader
Returns the indexed field name this OrdinalsReader is reading from.

Specified by:
getIndexFieldName in class OrdinalsReader

getReader

public OrdinalsReader.OrdinalsSegmentReader getReader(AtomicReaderContext context)
                                               throws IOException
Description copied from class: OrdinalsReader
Set current atomic reader.

Specified by:
getReader in class OrdinalsReader
Throws:
IOException

ramBytesUsed

public long ramBytesUsed()
How many bytes is this cache using?



Copyright © 2000-2014 Apache Software Foundation. All Rights Reserved.