BaseTermsEnum (Lucene 10.5.0 core API)
Description: declaration: package: org.apache.lucene.index, class: BaseTermsEnum

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:
  `FuzzyTermsEnum`, `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

  Modifier and Type
  Method
  Description
  `AttributeSource`
  `attributes()`
  Returns the related attributes.
  `IOBooleanSupplier`
  `prepareSeekExact(BytesRef text)`
  Two-phase `TermsEnum.seekExact(org.apache.lucene.util.BytesRef)`.
  `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, preferSeekExact, 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 Details

  - ### BaseTermsEnum

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

- ## Method Details

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

  - ### prepareSeekExact

    public IOBooleanSupplier prepareSeekExact(BytesRef text) throws IOException
    Description copied from class: `TermsEnum`
    Two-phase `TermsEnum.seekExact(org.apache.lucene.util.BytesRef)`. The first phase typically calls `IndexInput.prefetch(long, long)` on the right range of bytes under the hood, while the second phase `IOBooleanSupplier.get()` actually seeks the term within these bytes. This can be used to parallelize I/O across multiple terms by calling `TermsEnum.prepareSeekExact(org.apache.lucene.util.BytesRef)` on multiple terms enums before calling `IOBooleanSupplier.get()`.

    NOTE: It is illegal to call other methods on this `TermsEnum` after calling this method until `IOBooleanSupplier.get()` is called.

    NOTE: This may return `null` if this `TermsEnum` can identify that the term may not exist without performing any I/O.

    NOTE: The returned `IOBooleanSupplier` must be consumed in the same thread.

    Specified by:
      `prepareSeekExact` in class `TermsEnum`
    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`