org.apache.lucene.index.sorter
Class EarlyTerminatingSortingCollector
java.lang.Object
org.apache.lucene.search.Collector
org.apache.lucene.index.sorter.EarlyTerminatingSortingCollector
public class EarlyTerminatingSortingCollector
- extends Collector
A Collector
that early terminates collection of documents on a
per-segment basis, if the segment was sorted according to the given
Sorter
.
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 num docs 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 TopDocsCollector.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 Sorter.getID()
to detect
whether a segment was sorted with the same Sorter
as the one given in
EarlyTerminatingSortingCollector(Collector, Sorter, int)
. This has
two implications:
- if
Sorter.getID()
is not implemented correctly and returns
different identifiers for equivalent Sorter
s, this collector will not
detect sorted segments,
- if you suddenly change the
IndexWriter
's
SortingMergePolicy
to sort according to another criterion and if both
the old and the new Sorter
s have the same identifier, this
Collector
will incorrectly detect sorted segments.
- WARNING: This API is experimental and might change in incompatible ways in the next release.
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
in
protected final Collector in
sorter
protected final Sorter sorter
numDocsToCollect
protected final int numDocsToCollect
segmentTotalCollect
protected int segmentTotalCollect
segmentSorted
protected boolean segmentSorted
EarlyTerminatingSortingCollector
public EarlyTerminatingSortingCollector(Collector in,
Sorter sorter,
int numDocsToCollect)
- Create a new
EarlyTerminatingSortingCollector
instance.
- Parameters:
in
- the collector to wrapsorter
- the same sorter as the one which is used by IndexWriter
's
SortingMergePolicy
numDocsToCollect
- the number of documents to collect on each segment. When wrapping
a TopDocsCollector
, this number should be the number of
hits.
setScorer
public void setScorer(Scorer scorer)
throws IOException
- Specified by:
setScorer
in class Collector
- Throws:
IOException
collect
public void collect(int doc)
throws IOException
- Specified by:
collect
in class Collector
- Throws:
IOException
setNextReader
public void setNextReader(AtomicReaderContext context)
throws IOException
- Specified by:
setNextReader
in class Collector
- Throws:
IOException
acceptsDocsOutOfOrder
public boolean acceptsDocsOutOfOrder()
- Specified by:
acceptsDocsOutOfOrder
in class Collector
Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.