Package org.apache.lucene.search
Class HitQueue
Expert: Priority queue containing hit docs
- NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.
-
Constructor Summary
ConstructorDescriptionHitQueue
(int size, boolean prePopulate) Creates a new instance withsize
elements. -
Method Summary
Methods inherited from class org.apache.lucene.util.PriorityQueue
add, addAll, clear, getHeapArray, insertWithOverflow, iterator, pop, remove, size, top, updateTop, updateTop
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
HitQueue
public HitQueue(int size, boolean prePopulate) Creates a new instance withsize
elements. IfprePopulate
is set to true, the queue will pre-populate itself with sentinel objects and set itsPriorityQueue.size()
tosize
. In that case, you should not rely onPriorityQueue.size()
to get the number of actual elements that were added to the queue, but keep track yourself.
NOTE: in caseprePopulate
is true, you should pop elements from the queue using the following code example:PriorityQueue<ScoreDoc> pq = new HitQueue(10, true); // pre-populate. ScoreDoc top = pq.top(); // Add/Update one element. top.score = 1.0f; top.doc = 0; top = (ScoreDoc) pq.updateTop(); int totalHits = 1; // Now pop only the elements that were *truly* inserted. // First, pop all the sentinel elements (there are pq.size() - totalHits). for (int i = pq.size() - totalHits; i > 0; i--) pq.pop(); // Now pop the truly added elements. ScoreDoc[] results = new ScoreDoc[totalHits]; for (int i = totalHits - 1; i >= 0; i--) { results[i] = (ScoreDoc) pq.pop(); }
NOTE: This class pre-allocate a full array of length
size
.- Parameters:
size
- the requested size of this queue.prePopulate
- specifies whether to pre-populate the queue with sentinel values.
-
-
Method Details
-
lessThan
Description copied from class:PriorityQueue
Determines the ordering of objects in this priority queue. Subclasses must define this one method.- Specified by:
lessThan
in classPriorityQueue<ScoreDoc>
- Returns:
true
iff parametera
is less than parameterb
.
-