public class EarlyTerminatingSortingCollector extends Collector
Collector that early terminates collection of documents on a
per-segment basis, if the segment was sorted according to the given
Sort.
NOTE: the Collector detects sorted segments according to
SortingMergePolicy, so it's best used in conjunction with it. Also,
it collects up to a specified numDocsToCollect from each segment,
and therefore is mostly suitable for use in conjunction with collectors such as
TopDocsCollector, and not e.g. TotalHitCountCollector.
NOTE: If you wrap a TopDocsCollector that sorts in the same
order as the index order, the returned TopDocs
will be correct. However the total of hit count will be underestimated since not all matching documents will have
been collected.
NOTE: This Collector uses Sort.toString() to detect
whether a segment was sorted with the same Sort. This has
two implications:
IndexWriter's
SortingMergePolicy to sort according to another criterion and if both
the old and the new Sorts have the same identifier, this
Collector will incorrectly detect sorted segments.| Modifier and Type | Field and Description |
|---|---|
protected Collector |
in
The wrapped Collector
|
protected int |
numDocsToCollect
Number of documents to collect in each segment
|
protected boolean |
segmentSorted
True if the current segment being processed is sorted by
sort |
protected int |
segmentTotalCollect
Number of documents to collect in the current segment being processed
|
protected Sort |
sort
Sort used to sort the search results
|
| Constructor and Description |
|---|
EarlyTerminatingSortingCollector(Collector in,
Sort sort,
int numDocsToCollect)
Create a new
EarlyTerminatingSortingCollector instance. |
| Modifier and Type | Method and Description |
|---|---|
boolean |
acceptsDocsOutOfOrder() |
void |
collect(int doc) |
void |
setNextReader(AtomicReaderContext context) |
void |
setScorer(Scorer scorer) |
protected final Collector in
protected final Sort sort
protected final int numDocsToCollect
protected int segmentTotalCollect
protected boolean segmentSorted
sortpublic EarlyTerminatingSortingCollector(Collector in, Sort sort, int numDocsToCollect)
EarlyTerminatingSortingCollector instance.in - the collector to wrapsort - the sort you are sorting the search results onnumDocsToCollect - the number of documents to collect on each segment. When wrapping
a TopDocsCollector, this number should be the number of
hits.public void setScorer(Scorer scorer) throws IOException
setScorer in class CollectorIOExceptionpublic void collect(int doc)
throws IOException
collect in class CollectorIOExceptionpublic void setNextReader(AtomicReaderContext context) throws IOException
setNextReader in class CollectorIOExceptionpublic boolean acceptsDocsOutOfOrder()
acceptsDocsOutOfOrder in class CollectorCopyright © 2000-2014 Apache Software Foundation. All Rights Reserved.