Package org.apache.lucene.index

## Class BaseTermsEnum

- java.lang.Object
- - org.apache.lucene.index.TermsEnum
  - - org.apache.lucene.index.BaseTermsEnum

- All Implemented Interfaces:
    `BytesRefIterator`
  Direct Known Subclasses:
    `MultiTermsEnum`

      public abstract class BaseTermsEnum
      extends TermsEnum

  A base TermsEnum that adds default implementations for
  - `attributes()`
  - `termState()`
  - `seekExact(BytesRef)`
  - `seekExact(BytesRef, TermState)`
  In some cases, the default implementation may be slow and consume huge memory, so subclass SHOULD have its own implementation if possible.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class org.apache.lucene.index.TermsEnum

      `TermsEnum.SeekStatus`

  - ### Field Summary

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

      `EMPTY`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `BaseTermsEnum()` | Sole constructor.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `AttributeSource` | `attributes()` | Returns the related attributes.
    `boolean` | `seekExact​(BytesRef text)` | Attempts to seek to the exact term, returning true if the term is found.
    `void` | `seekExact​(BytesRef term, TermState state)` | Expert: Seeks a specific position by `TermState` previously obtained from `TermsEnum.termState()`.
    `TermState` | `termState()` | Expert: Returns the TermsEnums internal state to position the TermsEnum without re-seeking the term dictionary.

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

      `docFreq, impacts, ord, postings, postings, seekCeil, seekExact, term, totalTermFreq`

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

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

    - ### Methods inherited from interface org.apache.lucene.util.BytesRefIterator

      `next`

- - ### Constructor Detail

    - #### BaseTermsEnum

          protected BaseTermsEnum()

      Sole constructor. (For invocation by subclass constructors, typically implicit.)

  - ### Method Detail

    - #### termState

          public TermState termState()
                              throws IOException

      Description copied from class: `TermsEnum`
      Expert: Returns the TermsEnums internal state to position the TermsEnum without re-seeking the term dictionary.

      NOTE: A seek by `TermState` might not capture the `AttributeSource`'s state. Callers must maintain the `AttributeSource` states separately

      Specified by:
        `termState` in class `TermsEnum`
      Throws:
        `IOException`
      See Also:
        `TermState`, `TermsEnum.seekExact(BytesRef, TermState)`

    - #### seekExact

          public boolean seekExact​(BytesRef text)
                            throws IOException

      Description copied from class: `TermsEnum`
      Attempts to seek to the exact term, returning true if the term is found. If this returns false, the enum is unpositioned. For some codecs, seekExact may be substantially faster than `TermsEnum.seekCeil(org.apache.lucene.util.BytesRef)`.
      Specified by:
        `seekExact` in class `TermsEnum`
      Returns:
        true if the term is found; return false if the enum is unpositioned.
      Throws:
        `IOException`

    - #### seekExact

          public void seekExact​(BytesRef term,
                                TermState state)
                         throws IOException

      Description copied from class: `TermsEnum`
      Expert: Seeks a specific position by `TermState` previously obtained from `TermsEnum.termState()`. Callers should maintain the `TermState` to use this method. Low-level implementations may position the TermsEnum without re-seeking the term dictionary.

      Seeking by `TermState` should only be used iff the state was obtained from the same `TermsEnum` instance.

      NOTE: Using this method with an incompatible `TermState` might leave this `TermsEnum` in undefined state. On a segment level `TermState` instances are compatible only iff the source and the target `TermsEnum` operate on the same field. If operating on segment level, TermState instances must not be used across segments.

      NOTE: A seek by `TermState` might not restore the `AttributeSource`'s state. `AttributeSource` states must be maintained separately if this method is used.

      Specified by:
        `seekExact` in class `TermsEnum`
      Parameters:
        `term` - the term the TermState corresponds to
        `state` - the `TermState`
      Throws:
        `IOException`

    - #### attributes

          public AttributeSource attributes()

      Description copied from class: `TermsEnum`
      Returns the related attributes.
      Specified by:
        `attributes` in class `TermsEnum`