Class OrdinalsBuilder
- java.lang.Object
-
- org.elasticsearch.index.fielddata.ordinals.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 are1
based monotonically increasing positive integers.0
donates the missing value in this context.
-
-
Field Summary
Fields Modifier and Type Field Description static float
DEFAULT_ACCEPTABLE_OVERHEAD_RATIO
Default acceptable overhead ratio.static java.lang.String
FORCE_MULTI_ORDINALS
Whether to for the use ofMultiOrdinals
to store the ordinals for testing purposes.
-
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 anOrdinals
instance from the builders current state.org.apache.lucene.util.BitSet
buildDocsWithValuesSet()
Builds aBitSet
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 givenTermsEnum
and associates each terms ordinal with the terms documents.void
close()
Closes this builder and release all resources.long
currentOrdinal()
Returns the current ordinal or0
if this build has not been advanced vianextOrdinal()
.org.apache.lucene.util.LongsRef
docOrds(int docID)
Returns a sharedLongsRef
instance for the given doc ID holding all ordinals associated with it.org.apache.lucene.util.packed.PackedInts.Reader
getFirstOrdinals()
Return aPackedInts.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()
Returnstrue
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 ordinallong
nextOrdinal()
Advances theOrdinalsBuilder
to the next ordinal and return the current ordinal.
-
-
-
Field Detail
-
FORCE_MULTI_ORDINALS
public static final java.lang.String FORCE_MULTI_ORDINALS
Whether to for the use ofMultiOrdinals
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
-
-
Method Detail
-
docOrds
public org.apache.lucene.util.LongsRef docOrds(int docID)
Returns a sharedLongsRef
instance for the given doc ID holding all ordinals associated with it.
-
getFirstOrdinals
public org.apache.lucene.util.packed.PackedInts.Reader getFirstOrdinals()
Return aPackedInts.Reader
instance mapping every doc ID to its first ordinal + 1 if it exists and 0 otherwise.
-
nextOrdinal
public long nextOrdinal()
Advances theOrdinalsBuilder
to the next ordinal and return the current ordinal.
-
currentOrdinal
public long currentOrdinal()
Returns the current ordinal or0
if this build has not been advanced vianextOrdinal()
.
-
addDoc
public OrdinalsBuilder addDoc(int doc)
Associates the given document id with the current ordinal.
-
isMultiValued
public boolean isMultiValued()
Returnstrue
iff this builder contains a document ID that is associated with more than one ordinal. Otherwisefalse
;
-
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 aBitSet
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 returnsnull
-
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 givenTermsEnum
and associates each terms ordinal with the terms documents. The caller must exhaust the returnedBytesRefIterator
which returns all values where the first returned value is associated with the ordinal1
etc.- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException
Closes this builder and release all resources.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Throws:
java.io.IOException
-
-