org.apache.lucene.codecs.blocktree

## Class BlockTreeTermsReader

- java.lang.Object
- - org.apache.lucene.index.Fields
  - - org.apache.lucene.codecs.FieldsProducer
    - - org.apache.lucene.codecs.blocktree.BlockTreeTermsReader

- All Implemented Interfaces:
    Closeable, AutoCloseable, Iterable<String>, Accountable

      public final class BlockTreeTermsReader
      extends FieldsProducer

  A block-based terms index and dictionary that assigns terms to variable length blocks according to how they share prefixes. The terms index is a prefix trie whose leaves are term blocks. The advantage of this approach is that seekExact is often able to determine a term cannot exist without doing any IO, and intersection with Automata is very fast. Note that this terms dictionary has its own fixed terms index (ie, it does not support a pluggable terms index implementation).

  NOTE: this terms dictionary supports min/maxItemsPerBlock during indexing to control how much memory the terms index uses.

  If auto-prefix terms were indexed (see `BlockTreeTermsWriter`), then the `Terms.intersect(org.apache.lucene.util.automaton.CompiledAutomaton, org.apache.lucene.util.BytesRef)` implementation here will make use of these terms only if the automaton has a binary sink state, i.e. an accept state which has a transition to itself accepting all byte values. For example, both `PrefixQuery` and `TermRangeQuery` pass such automata to `Terms.intersect(org.apache.lucene.util.automaton.CompiledAutomaton, org.apache.lucene.util.BytesRef)`.

  The data structure used by this implementation is very similar to a burst trie (http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.18.3499), but with added logic to break up too-large blocks of all terms sharing a given prefix into smaller ones.

  Use `CheckIndex` with the `-verbose` option to see summary statistics on the blocks in the dictionary. See `BlockTreeTermsWriter`.

  WARNING: This API is experimental and might change in incompatible ways in the next release.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `VERSION_AUTO_PREFIX_TERMS` Auto-prefix terms.
    `static int` | `VERSION_AUTO_PREFIX_TERMS_COND` Conditional auto-prefix terms: we record at write time whether this field did write any auto-prefix terms.
    `static int` | `VERSION_AUTO_PREFIX_TERMS_REMOVED` Auto-prefix terms have been superseded by points.
    `static int` | `VERSION_CURRENT` Current terms format.
    `static int` | `VERSION_START` Initial terms format.

    - ### Fields inherited from class org.apache.lucene.index.Fields

      `EMPTY_ARRAY`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BlockTreeTermsReader(PostingsReaderBase postingsReader, SegmentReadState state)` Sole constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `checkIntegrity()` Checks consistency of this reader.
    `void` | `close()`
    `Collection<Accountable>` | `getChildResources()` Returns nested resources of this class.
    `Iterator<String>` | `iterator()` Returns an iterator that will step through all fields names.
    `long` | `ramBytesUsed()` Return the memory usage of this object in bytes.
    `int` | `size()` Returns the number of fields or -1 if the number of distinct field names is unknown.
    `Terms` | `terms(String field)` Get the `Terms` for this field.
    `String` | `toString()`

    - ### Methods inherited from class org.apache.lucene.codecs.FieldsProducer

      `getMergeInstance`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Field Detail

    - #### VERSION_START

          public static final int VERSION_START

      Initial terms format.
      See Also:
        Constant Field Values

    - #### VERSION_AUTO_PREFIX_TERMS

          public static final int VERSION_AUTO_PREFIX_TERMS

      Auto-prefix terms.
      See Also:
        Constant Field Values

    - #### VERSION_AUTO_PREFIX_TERMS_COND

          public static final int VERSION_AUTO_PREFIX_TERMS_COND

      Conditional auto-prefix terms: we record at write time whether this field did write any auto-prefix terms.
      See Also:
        Constant Field Values

    - #### VERSION_AUTO_PREFIX_TERMS_REMOVED

          public static final int VERSION_AUTO_PREFIX_TERMS_REMOVED

      Auto-prefix terms have been superseded by points.
      See Also:
        Constant Field Values

    - #### VERSION_CURRENT

          public static final int VERSION_CURRENT

      Current terms format.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### BlockTreeTermsReader

          public BlockTreeTermsReader(PostingsReaderBase postingsReader,
                                      SegmentReadState state)
                               throws IOException

      Sole constructor.
      Throws:
        `IOException`

  - ### Method Detail

    - #### close

          public void close()
                     throws IOException

      Specified by:
        `close` in interface `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      Specified by:
        `close` in class `FieldsProducer`
      Throws:
        `IOException`

    - #### iterator

          public Iterator<String> iterator()

      Description copied from class: `Fields`
      Returns an iterator that will step through all fields names. This will not return null.
      Specified by:
        `iterator` in interface `Iterable<String>`
      Specified by:
        `iterator` in class `Fields`

    - #### terms

          public Terms terms(String field)
                      throws IOException

      Description copied from class: `Fields`
      Get the `Terms` for this field. This will return null if the field does not exist.
      Specified by:
        `terms` in class `Fields`
      Throws:
        `IOException`

    - #### size

          public int size()

      Description copied from class: `Fields`
      Returns the number of fields or -1 if the number of distinct field names is unknown. If >= 0, `Fields.iterator()` will return as many field names.
      Specified by:
        `size` in class `Fields`

    - #### ramBytesUsed

          public long ramBytesUsed()

      Description copied from interface: `Accountable`
      Return the memory usage of this object in bytes. Negative values are illegal.

    - #### getChildResources

          public Collection<Accountable> getChildResources()

      Description copied from interface: `Accountable`
      Returns nested resources of this class. The result should be a point-in-time snapshot (to avoid race conditions).
      See Also:
        `Accountables`

    - #### checkIntegrity

          public void checkIntegrity()
                              throws IOException

      Description copied from class: `FieldsProducer`
      Checks consistency of this reader.

      Note that this may be costly in terms of I/O, e.g. may involve computing a checksum value against large data files.

      Specified by:
        `checkIntegrity` in class `FieldsProducer`
      Throws:
        `IOException`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

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