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. 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 Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `CachedOrdinalsReader.CachedOrds` Holds the cached ordinals in two parallel `int[]` arrays.

    - ### Nested classes/interfaces inherited from class org.apache.lucene.facet.taxonomy.OrdinalsReader

      `OrdinalsReader.OrdinalsSegmentReader`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `CachedOrdinalsReader(OrdinalsReader source)` Sole constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Collection<Accountable>` | `getChildResources()`
    `String` | `getIndexFieldName()` Returns the indexed field name this `OrdinalsReader` is reading from.
    `OrdinalsReader.OrdinalsSegmentReader` | `getReader(LeafReaderContext context)` Set current atomic reader.
    `long` | `ramBytesUsed()`

    - ### 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(LeafReaderContext context)
                                                         throws IOException

      Description copied from class: `OrdinalsReader`
      Set current atomic reader.
      Specified by:
        `getReader` in class `OrdinalsReader`
      Throws:
        `IOException`

    - #### ramBytesUsed

          public long ramBytesUsed()

      Specified by:
        `ramBytesUsed` in interface `Accountable`

    - #### getChildResources

          public Collection<Accountable> getChildResources()

      Specified by:
        `getChildResources` in interface `Accountable`

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