java.lang.Object
org.apache.lucene.util.DocIdSetBuilder
A builder of
DocIdSet
s. At first it uses a sparse structure to gather documents, and then
upgrades to a non-sparse bit set once enough hits match.
To add documents, you first need to call grow(int)
in order to reserve space, and then
call DocIdSetBuilder.BulkAdder.add(int)
on the returned DocIdSetBuilder.BulkAdder
.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static class
private static class
static class
Utility class to efficiently add many docs in one go.private static class
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate DocIdSetBuilder.BulkAdder
private FixedBitSet
private List
<DocIdSetBuilder.Buffer> private long
private final int
(package private) final boolean
(package private) final double
private final int
private int
-
Constructor Summary
ConstructorsConstructorDescriptionDocIdSetBuilder
(int maxDoc) Create a builder that can contain doc IDs between0
andmaxDoc
.DocIdSetBuilder
(int maxDoc, int docCount, long valueCount) DocIdSetBuilder
(int maxDoc, PointValues values, String field) Create aDocIdSetBuilder
instance that is optimized for accumulating docs that match the givenPointValues
.DocIdSetBuilder
(int maxDoc, Terms terms) Create aDocIdSetBuilder
instance that is optimized for accumulating docs that match the givenTerms
. -
Method Summary
Modifier and TypeMethodDescriptionvoid
add
(DocIdSetIterator iter) Add the content of the providedDocIdSetIterator
to this builder.private DocIdSetBuilder.Buffer
addBuffer
(int len) private int
additionalCapacity
(int numDocs) build()
Build aDocIdSet
from the accumulated doc IDs.private static DocIdSetBuilder.Buffer
concat
(List<DocIdSetBuilder.Buffer> buffers) Concatenate the buffers in any order, leaving at least one empty slot in the end NOTE: this method might reuse one of the arraysprivate static int
dedup
(int[] arr, int length) private void
ensureBufferCapacity
(int numDocs) grow
(int numDocs) Reserve space and return aDocIdSetBuilder.BulkAdder
object that can be used to add up tonumDocs
documents.private void
growBuffer
(DocIdSetBuilder.Buffer buffer, int additionalCapacity) private static boolean
noDups
(int[] a, int len) private void
-
Field Details
-
maxDoc
private final int maxDoc -
threshold
private final int threshold -
multivalued
final boolean multivalued -
numValuesPerDoc
final double numValuesPerDoc -
buffers
-
totalAllocated
private int totalAllocated -
bitSet
-
counter
private long counter -
adder
-
-
Constructor Details
-
DocIdSetBuilder
public DocIdSetBuilder(int maxDoc) Create a builder that can contain doc IDs between0
andmaxDoc
. -
DocIdSetBuilder
Create aDocIdSetBuilder
instance that is optimized for accumulating docs that match the givenTerms
.- Throws:
IOException
-
DocIdSetBuilder
Create aDocIdSetBuilder
instance that is optimized for accumulating docs that match the givenPointValues
.- Throws:
IOException
-
DocIdSetBuilder
DocIdSetBuilder(int maxDoc, int docCount, long valueCount)
-
-
Method Details
-
add
Add the content of the providedDocIdSetIterator
to this builder. NOTE: if you need to build aDocIdSet
out of a singleDocIdSetIterator
, you should rather useRoaringDocIdSet.Builder
.- Throws:
IOException
-
grow
Reserve space and return aDocIdSetBuilder.BulkAdder
object that can be used to add up tonumDocs
documents. -
ensureBufferCapacity
private void ensureBufferCapacity(int numDocs) -
additionalCapacity
private int additionalCapacity(int numDocs) -
addBuffer
-
growBuffer
-
upgradeToBitSet
private void upgradeToBitSet() -
build
Build aDocIdSet
from the accumulated doc IDs. -
concat
Concatenate the buffers in any order, leaving at least one empty slot in the end NOTE: this method might reuse one of the arrays -
dedup
private static int dedup(int[] arr, int length) -
noDups
private static boolean noDups(int[] a, int len)
-