org.apache.lucene.util.BitSet.prevSetBit()方法的使用及代码示例

x33g5p2x  于2022-01-17 转载在 其他  
字(11.3k)|赞(0)|评价(0)|浏览(79)

本文整理了Java中org.apache.lucene.util.BitSet.prevSetBit()方法的一些代码示例,展示了BitSet.prevSetBit()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。BitSet.prevSetBit()方法的具体详情如下:
包路径:org.apache.lucene.util.BitSet
类名称:BitSet
方法名:prevSetBit

BitSet.prevSetBit介绍

[英]Returns the index of the last set bit before or on the index specified. -1 is returned if there are no more set bits.
[中]

代码示例

代码示例来源:origin: org.elasticsearch/elasticsearch

private void markChildDocs(BitSet parentDocs, BitSet matchingDocs) {
  int currentDeleted = 0;
  while (currentDeleted < matchingDocs.length() &&
    (currentDeleted = matchingDocs.nextSetBit(currentDeleted)) != DocIdSetIterator.NO_MORE_DOCS) {
    int previousParent = parentDocs.prevSetBit(Math.max(0, currentDeleted-1));
    for (int i = previousParent + 1; i < currentDeleted; i++) {
      matchingDocs.set(i);
    }
    currentDeleted++;
  }
}

代码示例来源:origin: org.elasticsearch/elasticsearch

@Override
  public void collect(int parentDoc, long bucket) throws IOException {
    // if parentDoc is 0 then this means that this parent doesn't have child docs (b/c these appear always before the parent
    // doc), so we can skip:
    if (parentDoc == 0 || parentDocs == null || childDocs == null) {
      return;
    }
    final int prevParentDoc = parentDocs.prevSetBit(parentDoc - 1);
    int childDocId = childDocs.docID();
    if (childDocId <= prevParentDoc) {
      childDocId = childDocs.advance(prevParentDoc + 1);
    }
    for (; childDocId < parentDoc; childDocId = childDocs.nextDoc()) {
      collectBucket(sub, childDocId, bucket);
    }
  }
};

代码示例来源:origin: org.elasticsearch/elasticsearch

@Override
public boolean advanceExact(int parentDoc) throws IOException {
  assert parentDoc >= lastSeenParentDoc : "can only evaluate current and upcoming parent docs";
  if (parentDoc == lastSeenParentDoc) {
    return true;
  }
  final int prevParentDoc = parentDocs.prevSetBit(parentDoc - 1);
  final int firstChildDoc;
  if (childDocs.docID() > prevParentDoc) {
    firstChildDoc = childDocs.docID();
  } else {
    firstChildDoc = childDocs.advance(prevParentDoc + 1);
  }
  lastSeenParentDoc = parentDoc;
  lastEmittedValue = pick(values, missingValue, childDocs, firstChildDoc, parentDoc, maxChildren);
  return true;
}

代码示例来源:origin: org.elasticsearch/elasticsearch

@Override
public boolean advanceExact(int parentDoc) throws IOException {
  assert parentDoc >= lastSeenParentDoc : "can only evaluate current and upcoming root docs";
  if (parentDoc == lastSeenParentDoc) {
    return lastEmittedOrd != -1;
  }
  final int prevParentDoc = parentDocs.prevSetBit(parentDoc - 1);
  final int firstChildDoc;
  if (childDocs.docID() > prevParentDoc) {
    firstChildDoc = childDocs.docID();
  } else {
    firstChildDoc = childDocs.advance(prevParentDoc + 1);
  }
  docID = lastSeenParentDoc = parentDoc;
  lastEmittedOrd = pick(selectedValues, childDocs, firstChildDoc, parentDoc, maxChildren);
  return lastEmittedOrd != -1;
}

代码示例来源:origin: org.elasticsearch/elasticsearch

@Override
public boolean advanceExact(int parentDoc) throws IOException {
  assert parentDoc >= lastSeenParentDoc : "can only evaluate current and upcoming parent docs";
  if (parentDoc == lastSeenParentDoc) {
    return true;
  } else if (parentDoc == 0) {
    lastEmittedValue = missingValue;
    return true;
  }
  final int prevParentDoc = parentDocs.prevSetBit(parentDoc - 1);
  final int firstChildDoc;
  if (childDocs.docID() > prevParentDoc) {
    firstChildDoc = childDocs.docID();
  } else {
    firstChildDoc = childDocs.advance(prevParentDoc + 1);
  }
  lastSeenParentDoc = parentDoc;
  lastEmittedValue = pick(values, missingValue, childDocs, firstChildDoc, parentDoc, maxChildren);
  return true;
}

代码示例来源:origin: org.elasticsearch/elasticsearch

@Override
public boolean advanceExact(int parentDoc) throws IOException {
  assert parentDoc >= lastSeenParentDoc : "can only evaluate current and upcoming root docs";
  if (parentDoc == lastSeenParentDoc) {
    return true;
  }
  final int prevParentDoc = parentDocs.prevSetBit(parentDoc - 1);
  final int firstChildDoc;
  if (childDocs.docID() > prevParentDoc) {
    firstChildDoc = childDocs.docID();
  } else {
    firstChildDoc = childDocs.advance(prevParentDoc + 1);
  }
  lastSeenParentDoc = parentDoc;
  lastEmittedValue = pick(selectedValues, builder, childDocs, firstChildDoc, parentDoc, maxChildren);
  if (lastEmittedValue == null) {
    lastEmittedValue = missingValue;
  }
  return true;
}

代码示例来源:origin: org.elasticsearch/elasticsearch

void processBufferedChildBuckets() throws IOException {
    if (bucketBuffer.isEmpty()) {
      return;
    }
    final int prevParentDoc = parentDocs.prevSetBit(currentParentDoc - 1);
    int childDocId = childDocs.docID();
    if (childDocId <= prevParentDoc) {
      childDocId = childDocs.advance(prevParentDoc + 1);
    }
    for (; childDocId < currentParentDoc; childDocId = childDocs.nextDoc()) {
      cachedScorer.doc = childDocId;
      final long[] buffer = bucketBuffer.buffer;
      final int size = bucketBuffer.size();
      for (int i = 0; i < size; i++) {
        collectBucket(sub, childDocId, buffer[i]);
      }
    }
    bucketBuffer.clear();
  }
}

代码示例来源:origin: org.elasticsearch/elasticsearch

int previousParent = parentBits.prevSetBit(currentParent);
for (int docId = childIter.advance(previousParent + 1); docId < nestedSubDocId && docId != DocIdSetIterator.NO_MORE_DOCS;
    docId = childIter.nextDoc()) {

代码示例来源:origin: org.apache.servicemix.bundles/org.apache.servicemix.bundles.elasticsearch

private void markChildDocs(BitSet parentDocs, BitSet matchingDocs) {
  int currentDeleted = 0;
  while (currentDeleted < matchingDocs.length() &&
    (currentDeleted = matchingDocs.nextSetBit(currentDeleted)) != DocIdSetIterator.NO_MORE_DOCS) {
    int previousParent = parentDocs.prevSetBit(Math.max(0, currentDeleted-1));
    for (int i = previousParent + 1; i < currentDeleted; i++) {
      matchingDocs.set(i);
    }
    currentDeleted++;
  }
}

代码示例来源:origin: apache/servicemix-bundles

private void markChildDocs(BitSet parentDocs, BitSet matchingDocs) {
  int currentDeleted = 0;
  while (currentDeleted < matchingDocs.length() &&
    (currentDeleted = matchingDocs.nextSetBit(currentDeleted)) != DocIdSetIterator.NO_MORE_DOCS) {
    int previousParent = parentDocs.prevSetBit(Math.max(0, currentDeleted-1));
    for (int i = previousParent + 1; i < currentDeleted; i++) {
      matchingDocs.set(i);
    }
    currentDeleted++;
  }
}

代码示例来源:origin: apache/servicemix-bundles

@Override
public boolean advanceExact(int parentDoc) throws IOException {
  assert parentDoc >= lastSeenParentDoc : "can only evaluate current and upcoming parent docs";
  if (parentDoc == lastSeenParentDoc) {
    return true;
  }
  final int prevParentDoc = parentDocs.prevSetBit(parentDoc - 1);
  final int firstChildDoc;
  if (childDocs.docID() > prevParentDoc) {
    firstChildDoc = childDocs.docID();
  } else {
    firstChildDoc = childDocs.advance(prevParentDoc + 1);
  }
  lastSeenParentDoc = parentDoc;
  lastEmittedValue = pick(values, missingValue, childDocs, firstChildDoc, parentDoc);
  return true;
}

代码示例来源:origin: apache/servicemix-bundles

@Override
public boolean advanceExact(int parentDoc) throws IOException {
  assert parentDoc >= lastSeenParentDoc : "can only evaluate current and upcoming root docs";
  if (parentDoc == lastSeenParentDoc) {
    return lastEmittedOrd != -1;
  }
  final int prevParentDoc = parentDocs.prevSetBit(parentDoc - 1);
  final int firstChildDoc;
  if (childDocs.docID() > prevParentDoc) {
    firstChildDoc = childDocs.docID();
  } else {
    firstChildDoc = childDocs.advance(prevParentDoc + 1);
  }
  docID = lastSeenParentDoc = parentDoc;
  lastEmittedOrd = pick(selectedValues, childDocs, firstChildDoc, parentDoc);
  return lastEmittedOrd != -1;
}

代码示例来源:origin: harbby/presto-connectors

@Override
public boolean get(int docID) {
 assert parents.get(docID) : "this selector may only be used on parent documents";
 if (docID == 0) {
  // no children
  return false;
 }
 final int firstChild = parents.prevSetBit(docID - 1) + 1;
 for (int child = children.nextSetBit(firstChild); child < docID; child = children.nextSetBit(child + 1)) {
  if (docsWithValue.get(child)) {
   return true;
  }
 }
 return false;
}

代码示例来源:origin: org.codelibs/elasticsearch-querybuilders

@Override
  public void collect(int parentDoc, long bucket) throws IOException {
    // if parentDoc is 0 then this means that this parent doesn't have child docs (b/c these appear always before the parent
    // doc), so we can skip:
    if (parentDoc == 0 || parentDocs == null || childDocs == null) {
      return;
    }
    final int prevParentDoc = parentDocs.prevSetBit(parentDoc - 1);
    int childDocId = childDocs.docID();
    if (childDocId <= prevParentDoc) {
      childDocId = childDocs.advance(prevParentDoc + 1);
    }
    for (; childDocId < parentDoc; childDocId = childDocs.nextDoc()) {
      collectBucket(sub, childDocId, bucket);
    }
  }
};

代码示例来源:origin: org.apache.servicemix.bundles/org.apache.servicemix.bundles.elasticsearch

@Override
  public void collect(int parentDoc, long bucket) throws IOException {
    // if parentDoc is 0 then this means that this parent doesn't have child docs (b/c these appear always before the parent
    // doc), so we can skip:
    if (parentDoc == 0 || parentDocs == null || childDocs == null) {
      return;
    }
    final int prevParentDoc = parentDocs.prevSetBit(parentDoc - 1);
    int childDocId = childDocs.docID();
    if (childDocId <= prevParentDoc) {
      childDocId = childDocs.advance(prevParentDoc + 1);
    }
    for (; childDocId < parentDoc; childDocId = childDocs.nextDoc()) {
      collectBucket(sub, childDocId, bucket);
    }
  }
};

代码示例来源:origin: org.apache.servicemix.bundles/org.apache.servicemix.bundles.elasticsearch

@Override
public boolean advanceExact(int parentDoc) throws IOException {
  assert parentDoc >= lastSeenParentDoc : "can only evaluate current and upcoming parent docs";
  if (parentDoc == lastSeenParentDoc) {
    return true;
  }
  final int prevParentDoc = parentDocs.prevSetBit(parentDoc - 1);
  final int firstChildDoc;
  if (childDocs.docID() > prevParentDoc) {
    firstChildDoc = childDocs.docID();
  } else {
    firstChildDoc = childDocs.advance(prevParentDoc + 1);
  }
  lastSeenParentDoc = parentDoc;
  lastEmittedValue = pick(values, missingValue, childDocs, firstChildDoc, parentDoc, maxChildren);
  return true;
}

代码示例来源:origin: com.strapdata.elasticsearch/elasticsearch

@Override
  public void collect(int parentDoc, long bucket) throws IOException {
    // if parentDoc is 0 then this means that this parent doesn't have child docs (b/c these appear always before the parent
    // doc), so we can skip:
    if (parentDoc == 0 || parentDocs == null || childDocs == null) {
      return;
    }
    final int prevParentDoc = parentDocs.prevSetBit(parentDoc - 1);
    int childDocId = childDocs.docID();
    if (childDocId <= prevParentDoc) {
      childDocId = childDocs.advance(prevParentDoc + 1);
    }
    for (; childDocId < parentDoc; childDocId = childDocs.nextDoc()) {
      collectBucket(sub, childDocId, bucket);
    }
  }
};

代码示例来源:origin: org.apache.servicemix.bundles/org.apache.servicemix.bundles.elasticsearch

@Override
public boolean advanceExact(int parentDoc) throws IOException {
  assert parentDoc >= lastSeenParentDoc : "can only evaluate current and upcoming root docs";
  if (parentDoc == lastSeenParentDoc) {
    return lastEmittedOrd != -1;
  }
  final int prevParentDoc = parentDocs.prevSetBit(parentDoc - 1);
  final int firstChildDoc;
  if (childDocs.docID() > prevParentDoc) {
    firstChildDoc = childDocs.docID();
  } else {
    firstChildDoc = childDocs.advance(prevParentDoc + 1);
  }
  docID = lastSeenParentDoc = parentDoc;
  lastEmittedOrd = pick(selectedValues, childDocs, firstChildDoc, parentDoc, maxChildren);
  return lastEmittedOrd != -1;
}

代码示例来源:origin: apache/servicemix-bundles

@Override
  public void collect(int parentDoc, long bucket) throws IOException {
    // if parentDoc is 0 then this means that this parent doesn't have child docs (b/c these appear always before the parent
    // doc), so we can skip:
    if (parentDoc == 0 || parentDocs == null || childDocs == null) {
      return;
    }
    final int prevParentDoc = parentDocs.prevSetBit(parentDoc - 1);
    int childDocId = childDocs.docID();
    if (childDocId <= prevParentDoc) {
      childDocId = childDocs.advance(prevParentDoc + 1);
    }
    for (; childDocId < parentDoc; childDocId = childDocs.nextDoc()) {
      collectBucket(sub, childDocId, bucket);
    }
  }
};

代码示例来源:origin: org.apache.servicemix.bundles/org.apache.servicemix.bundles.elasticsearch

void processBufferedChildBuckets() throws IOException {
  if (bucketBuffer.isEmpty()) {
    return;
  }
  final int prevParentDoc = parentDocs.prevSetBit(currentParentDoc - 1);
  int childDocId = childDocs.docID();
  if (childDocId <= prevParentDoc) {
    childDocId = childDocs.advance(prevParentDoc + 1);
  }
  for (; childDocId < currentParentDoc; childDocId = childDocs.nextDoc()) {
    final long[] buffer = bucketBuffer.buffer;
    final int size = bucketBuffer.size();
    for (int i = 0; i < size; i++) {
      collectBucket(sub, childDocId, buffer[i]);
    }
  }
  bucketBuffer.clear();
}

相关文章