@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));
   }
 }
Example #2
0
 @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)));
  }
Example #4
0
 @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);
 }