Class SortedSetDocValues

java.lang.Object
org.apache.lucene.search.DocIdSetIterator
org.apache.lucene.index.SortedSetDocValues
Direct Known Subclasses:
FilterSortedSetDocValues, MultiDocValues.MultiSortedSetDocValues

public abstract class SortedSetDocValues extends DocIdSetIterator
A multi-valued version of SortedDocValues.

Per-Document values in a SortedSetDocValues are deduplicated, dereferenced, and sorted into a dictionary of unique values. A pointer to the dictionary value (ordinal) can be retrieved for each document. Ordinals are dense and in increasing sorted order.

  • Field Details

    • NO_MORE_ORDS

      @Deprecated public static final long NO_MORE_ORDS
      Deprecated.
      Will be removed in a future version. Please use docValueCount() to know the number of doc values for the current document up-front.
      When returned by nextOrd() it means there are no more ordinals for the document.
      See Also:
  • Constructor Details

    • SortedSetDocValues

      protected SortedSetDocValues()
      Sole constructor. (For invocation by subclass constructors, typically implicit.)
  • Method Details

    • nextOrd

      public abstract long nextOrd() throws IOException
      Returns the next ordinal for the current document. It is illegal to call this method after advanceExact(int) returned false.

      Note: Returns NO_MORE_ORDS when the current document has no more ordinals. This behavior will be removed in a future version. Callers should use docValueCount() to determine the number of values for the current document up-front.

      Returns:
      next ordinal for the document, or NO_MORE_ORDS. ordinals are dense, start at 0, then increment by 1 for the next value in sorted order.
      Throws:
      IOException
    • docValueCount

      public abstract int docValueCount()
      Retrieves the number of unique ords for the current document. This must always be greater than zero. It is illegal to call this method after advanceExact(int) returned false.
    • lookupOrd

      public abstract BytesRef lookupOrd(long ord) throws IOException
      Retrieves the value for the specified ordinal. The returned BytesRef may be re-used across calls to lookupOrd so make sure to copy it if you want to keep it around.
      Parameters:
      ord - ordinal to lookup
      Throws:
      IOException
      See Also:
    • getValueCount

      public abstract long getValueCount()
      Returns the number of unique values.
      Returns:
      number of unique values in this SortedDocValues. This is also equivalent to one plus the maximum ordinal.
    • lookupTerm

      public long lookupTerm(BytesRef key) throws IOException
      If key exists, returns its ordinal, else returns -insertionPoint-1, like Arrays.binarySearch.
      Parameters:
      key - Key to look up
      Throws:
      IOException
    • termsEnum

      public TermsEnum termsEnum() throws IOException
      Returns a TermsEnum over the values. The enum supports TermsEnum.ord() and TermsEnum.seekExact(long).
      Throws:
      IOException
    • intersect

      public TermsEnum intersect(CompiledAutomaton automaton) throws IOException
      Returns a TermsEnum over the values, filtered by a CompiledAutomaton The enum supports TermsEnum.ord().
      Throws:
      IOException
    • advanceExact

      public abstract boolean advanceExact(int target) throws IOException
      Advance the iterator to exactly target and return whether target has a value. target must be greater than or equal to the current doc ID and must be a valid doc ID, ie. ≥ 0 and < maxDoc. After this method returns, DocIdSetIterator.docID() returns target.
      Throws:
      IOException