Class OrdinalsBuilder

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public final class OrdinalsBuilder
    extends java.lang.Object
    implements java.io.Closeable
    Simple class to build document ID <-> ordinal mapping. Note: Ordinals are 1 based monotonically increasing positive integers. 0 donates the missing value in this context.
    • Constructor Summary

      Constructors 
      Constructor Description
      OrdinalsBuilder​(int maxDoc)  
      OrdinalsBuilder​(int maxDoc, float acceptableOverheadRatio)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      OrdinalsBuilder addDoc​(int doc)
      Associates the given document id with the current ordinal.
      Ordinals build()
      Builds an Ordinals instance from the builders current state.
      org.apache.lucene.util.BitSet buildDocsWithValuesSet()
      Builds a BitSet where each documents bit is that that has one or more ordinals associated with it.
      org.apache.lucene.util.BytesRefIterator buildFromTerms​(org.apache.lucene.index.TermsEnum termsEnum)
      This method iterates all terms in the given TermsEnum and associates each terms ordinal with the terms documents.
      void close()
      Closes this builder and release all resources.
      long currentOrdinal()
      Returns the current ordinal or 0 if this build has not been advanced via nextOrdinal().
      org.apache.lucene.util.LongsRef docOrds​(int docID)
      Returns a shared LongsRef instance for the given doc ID holding all ordinals associated with it.
      org.apache.lucene.util.packed.PackedInts.Reader getFirstOrdinals()
      Return a PackedInts.Reader instance mapping every doc ID to its first ordinal + 1 if it exists and 0 otherwise.
      int getNumDocsWithValue()
      Returns the number distinct of document IDs with one or more values.
      int getNumMultiValuesDocs()
      Returns the number distinct of document IDs associated with two or more values.
      int getNumSingleValuedDocs()
      Returns the number distinct of document IDs associated with exactly one value.
      int getTotalNumOrds()
      Returns the number of document ID to ordinal pairs in this builder.
      long getValueCount()
      Returns the number of distinct ordinals in this builder.
      boolean isMultiValued()
      Returns true iff this builder contains a document ID that is associated with more than one ordinal.
      int maxDoc()
      Returns the maximum document ID this builder can associate with an ordinal
      long nextOrdinal()
      Advances the OrdinalsBuilder to the next ordinal and return the current ordinal.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • FORCE_MULTI_ORDINALS

        public static final java.lang.String FORCE_MULTI_ORDINALS
        Whether to for the use of MultiOrdinals to store the ordinals for testing purposes.
        See Also:
        Constant Field Values
      • DEFAULT_ACCEPTABLE_OVERHEAD_RATIO

        public static final float DEFAULT_ACCEPTABLE_OVERHEAD_RATIO
        Default acceptable overhead ratio. OrdinalsBuilder memory usage is mostly transient so it is likely a better trade-off to trade memory for speed in order to resize less often.
        See Also:
        Constant Field Values
    • Constructor Detail

      • OrdinalsBuilder

        public OrdinalsBuilder​(int maxDoc,
                               float acceptableOverheadRatio)
                        throws java.io.IOException
        Throws:
        java.io.IOException
      • OrdinalsBuilder

        public OrdinalsBuilder​(int maxDoc)
                        throws java.io.IOException
        Throws:
        java.io.IOException
    • Method Detail

      • docOrds

        public org.apache.lucene.util.LongsRef docOrds​(int docID)
        Returns a shared LongsRef instance for the given doc ID holding all ordinals associated with it.
      • getFirstOrdinals

        public org.apache.lucene.util.packed.PackedInts.Reader getFirstOrdinals()
        Return a PackedInts.Reader instance mapping every doc ID to its first ordinal + 1 if it exists and 0 otherwise.
      • nextOrdinal

        public long nextOrdinal()
        Advances the OrdinalsBuilder to the next ordinal and return the current ordinal.
      • currentOrdinal

        public long currentOrdinal()
        Returns the current ordinal or 0 if this build has not been advanced via nextOrdinal().
      • addDoc

        public OrdinalsBuilder addDoc​(int doc)
        Associates the given document id with the current ordinal.
      • isMultiValued

        public boolean isMultiValued()
        Returns true iff this builder contains a document ID that is associated with more than one ordinal. Otherwise false;
      • getNumDocsWithValue

        public int getNumDocsWithValue()
        Returns the number distinct of document IDs with one or more values.
      • getNumSingleValuedDocs

        public int getNumSingleValuedDocs()
        Returns the number distinct of document IDs associated with exactly one value.
      • getNumMultiValuesDocs

        public int getNumMultiValuesDocs()
        Returns the number distinct of document IDs associated with two or more values.
      • getTotalNumOrds

        public int getTotalNumOrds()
        Returns the number of document ID to ordinal pairs in this builder.
      • getValueCount

        public long getValueCount()
        Returns the number of distinct ordinals in this builder.
      • buildDocsWithValuesSet

        public org.apache.lucene.util.BitSet buildDocsWithValuesSet()
        Builds a BitSet where each documents bit is that that has one or more ordinals associated with it. if every document has an ordinal associated with it this method returns null
      • build

        public Ordinals build()
        Builds an Ordinals instance from the builders current state.
      • maxDoc

        public int maxDoc()
        Returns the maximum document ID this builder can associate with an ordinal
      • buildFromTerms

        public org.apache.lucene.util.BytesRefIterator buildFromTerms​(org.apache.lucene.index.TermsEnum termsEnum)
                                                               throws java.io.IOException
        This method iterates all terms in the given TermsEnum and associates each terms ordinal with the terms documents. The caller must exhaust the returned BytesRefIterator which returns all values where the first returned value is associated with the ordinal 1 etc.
        Throws:
        java.io.IOException
      • close

        public void close()
                   throws java.io.IOException
        Closes this builder and release all resources.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException