@Override public int nextPosition() throws IOException { if (started == false) { started = true; return posQueue.top().pos; } if (posQueue.top().upto == 1) { posQueue.pop(); return posQueue.top().pos; } posQueue.top().pos = posQueue.top().pe.nextPosition(); posQueue.top().upto--; posQueue.updateTop(); return posQueue.top().pos; }
@Override boolean hasValue() { return queue.top().hasValue(); } };
@Override public Query getQuery() { return queue.top().getQuery(); } }
TopScoreDocCollector(int numHits) { super(new HitQueue(numHits, true)); // HitQueue implements getSentinelObject to return a ScoreDoc, so we know // that at this point top() is already initialized. pqTop = pq.top(); }
@Override public int startOffset() throws IOException { return queue.top().startOffset(); }
@Override public int endOffset() throws IOException { return queue.top().endOffset(); }
@Override public int endOffset() throws IOException { return posQueue.top().pe.endOffset(); }
@Override public int endPosition() { return queue.top().endPosition(); }
@Override public int startPosition() { return queue.top().startPosition(); }
@Override long longValue() { return queue.top().longValue(); }
@Override BytesRef binaryValue() { return queue.top().binaryValue(); }
@Override public int startOffset() throws IOException { return posQueue.top().pe.startOffset(); }
@Override public BytesRef getPayload() throws IOException { return posQueue.top().pe.getPayload(); }
@Override public MatchesIterator getSubMatches() throws IOException { return queue.top().getSubMatches(); }
@Override public T next() throws IOException { T top = queue.top(); while (true) { int docID = top.nextDoc(); if (docID == NO_MORE_DOCS) { queue.pop(); top = queue.top(); break; } int mappedDocID = top.docMap.get(docID); if (mappedDocID == -1) { // doc was deleted continue; } else { top.mappedDocID = mappedDocID; top = queue.updateTop(); break; } } return top; } }
@Override public int nextDoc() { // Advance all sub iterators past current doc while (true) { if (queue.size() == 0) { doc = NO_MORE_DOCS; break; } int newDoc = queue.top().docID(); if (newDoc != doc) { assert newDoc > doc: "doc=" + doc + " newDoc=" + newDoc; doc = newDoc; break; } if (queue.top().nextDoc() == NO_MORE_DOCS) { queue.pop(); } else { queue.updateTop(); } } return doc; }
@Override public boolean next() throws IOException { if (started == false) { return started = true; } if (queue.top().next() == false) { queue.pop(); } if (queue.size() > 0) { queue.updateTop(); return true; } return false; }
while ((top = queue.top()) != null) { writer.write(top.current); try {
while (hitUpto < numIterOnHits) { assert queue.size() > 0; ShardRef ref = queue.top(); final ScoreDoc hit = shardHits[ref.shardIndex].scoreDocs[ref.hitIndex++]; if (setShardIndex) {
boolean isSorted = true; while (queue.size() != 0) { LeafAndDocID top = queue.top(); if (lastReaderIndex > top.readerIndex) {