@Override public void collect(int doc, long bucketOrd) { visitedOrds = bigArrays.grow(visitedOrds, bucketOrd + 1); FixedBitSet bits = visitedOrds.get(bucketOrd); if (bits == null) { bits = new FixedBitSet(maxOrd); visitedOrds.set(bucketOrd, bits); } values.setDocument(doc); final int valueCount = values.cardinality(); for (int i = 0; i < valueCount; ++i) { bits.set((int) values.ordAt(i)); } }
@Override public void setNextReader(AtomicReaderContext context) throws IOException { values = indexFieldData.load(context).getBytesValues(parentType); if (values != null) { ordinals = values.ordinals(); final long maxOrd = ordinals.getMaxOrd(); if (parentIdsIndex == null) { parentIdsIndex = bigArrays.newLongArray(BigArrays.overSize(maxOrd), false); } else if (parentIdsIndex.size() < maxOrd) { parentIdsIndex = bigArrays.grow(parentIdsIndex, maxOrd); } parentIdsIndex.fill(0, maxOrd, -1L); } }
@Override public void collect(int doc, long owningBucketOrdinal) throws IOException { assert valuesSource != null : "collect must only be called if #shouldCollect returns true"; DoubleValues values = valuesSource.doubleValues(); if (values == null || values.setDocument(doc) == 0) { return; } if (owningBucketOrdinal >= mins.size()) { long from = mins.size(); mins = BigArrays.grow(mins, owningBucketOrdinal + 1); mins.fill(from, mins.size(), Double.POSITIVE_INFINITY); } mins.set(owningBucketOrdinal, Math.min(values.nextValue(), mins.get(owningBucketOrdinal))); }
@Override public void collect(int doc) throws IOException { if (values != null) { long ord = ordinals.getOrd(doc); long parentIdx = parentIdsIndex.get(ord); if (parentIdx < 0) { final BytesRef bytes = values.getValueByOrd(ord); final int hash = values.currentValueHash(); parentIdx = parentIds.add(bytes, hash); if (parentIdx < 0) { parentIdx = -parentIdx - 1; doScore(parentIdx); } else { scores = bigArrays.grow(scores, parentIdx + 1); scores.set(parentIdx, scorer.score()); } parentIdsIndex.set(ord, parentIdx); } else { doScore(parentIdx); } } }
private void ensureCapacity(int offset) { bytes = bigarrays.grow(bytes, offset); }