org.apache.lucene.codecs

## Class BlockTreeTermsReader

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

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

      public 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 it's own fixed terms index (ie, it does not support a pluggable terms index implementation).

  NOTE: this terms dictionary does not support index divisor when opening an IndexReader. Instead, you can change the min/maxItemsPerBlock during indexing.

  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.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `class` | `BlockTreeTermsReader.FieldReader` BlockTree's implementation of `Terms`.
    `static class` | `BlockTreeTermsReader.Stats` BlockTree statistics for a single field returned by `BlockTreeTermsReader.FieldReader.computeStats()`.

  - ### Field Summary

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

      `EMPTY_ARRAY`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BlockTreeTermsReader(Directory dir, FieldInfos fieldInfos, SegmentInfo info, PostingsReaderBase postingsReader, IOContext ioContext, String segmentSuffix, int indexDivisor)` Sole constructor.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()`
    `Iterator<String>` | `iterator()` Returns an iterator that will step through all fields names.
    `protected int` | `readHeader(IndexInput input)` Reads terms file header.
    `protected int` | `readIndexHeader(IndexInput input)` Reads index file header.
    `protected void` | `seekDir(IndexInput input, long dirOffset)` Seek `input` to the directory offset.
    `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.

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

      `getUniqueTermCount`

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

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

- - ### Constructor Detail

    - #### BlockTreeTermsReader

          public BlockTreeTermsReader(Directory dir,
                              FieldInfos fieldInfos,
                              SegmentInfo info,
                              PostingsReaderBase postingsReader,
                              IOContext ioContext,
                              String segmentSuffix,
                              int indexDivisor)
                               throws IOException

      Sole constructor.
      Throws:
        `IOException`

  - ### Method Detail

    - #### readHeader

          protected int readHeader(IndexInput input)
                            throws IOException

      Reads terms file header.
      Throws:
        `IOException`

    - #### readIndexHeader

          protected int readIndexHeader(IndexInput input)
                                 throws IOException

      Reads index file header.
      Throws:
        `IOException`

    - #### seekDir

          protected void seekDir(IndexInput input,
                     long dirOffset)
                          throws IOException

      Seek `input` to the directory offset.
      Throws:
        `IOException`

    - #### 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`

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