|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.lucene.search.Collector org.apache.lucene.search.TimeLimitingCollector
public class TimeLimitingCollector
The TimeLimitingCollector
is used to timeout search requests that
take longer than the maximum allowed search time limit. After this time is
exceeded, the search thread is stopped by throwing a
TimeLimitingCollector.TimeExceededException
.
Nested Class Summary | |
---|---|
static class |
TimeLimitingCollector.TimeExceededException
Thrown when elapsed search time exceeds allowed search time. |
static class |
TimeLimitingCollector.TimerThread
|
Constructor Summary | |
---|---|
TimeLimitingCollector(Collector collector,
Counter clock,
long ticksAllowed)
Create a TimeLimitedCollector wrapper over another Collector with a specified timeout. |
Method Summary | |
---|---|
boolean |
acceptsDocsOutOfOrder()
Return true if this collector does not
require the matching docIDs to be delivered in int sort
order (smallest to largest) to Collector.collect(int) . |
void |
collect(int doc)
Calls Collector.collect(int) on the decorated Collector
unless the allowed time has passed, in which case it throws an exception. |
static Counter |
getGlobalCounter()
Returns the global TimerThreads Counter |
static TimeLimitingCollector.TimerThread |
getGlobalTimerThread()
Returns the global TimeLimitingCollector.TimerThread . |
boolean |
isGreedy()
Checks if this time limited collector is greedy in collecting the last hit. |
void |
setBaseline()
Syntactic sugar for setBaseline(long) using Counter.get()
on the clock passed to the construcutor. |
void |
setBaseline(long clockTime)
Sets the baseline for this collector. |
void |
setCollector(Collector collector)
This is so the same timer can be used with a multi-phase search process such as grouping. |
void |
setGreedy(boolean greedy)
Sets whether this time limited collector is greedy. |
void |
setNextReader(IndexReader reader,
int base)
Called before collecting from each IndexReader. |
void |
setScorer(Scorer scorer)
Called before successive calls to Collector.collect(int) . |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public TimeLimitingCollector(Collector collector, Counter clock, long ticksAllowed)
Collector
with a specified timeout.
collector
- the wrapped Collector
clock
- the timer clockticksAllowed
- max time allowed for collecting
hits after which TimeLimitingCollector.TimeExceededException
is thrownMethod Detail |
---|
public void setBaseline(long clockTime)
Example usage:
Counter clock = ...; long baseline = clock.get(); // ... prepare search TimeLimitingCollector collector = new TimeLimitingCollector(c, clock, numTicks); collector.setBaseline(baseline); indexSearcher.search(query, collector);
clockTime
- setBaseline()
public void setBaseline()
setBaseline(long)
using Counter.get()
on the clock passed to the construcutor.
public boolean isGreedy()
TimeLimitingCollector.TimeExceededException
without allowing the wrapped collector to collect current doc. A greedy one would
first allow the wrapped hit collector to collect current doc and only then
throw a TimeLimitingCollector.TimeExceededException
.
setGreedy(boolean)
public void setGreedy(boolean greedy)
greedy
- true to make this time limited greedyisGreedy()
public void collect(int doc) throws IOException
Collector.collect(int)
on the decorated Collector
unless the allowed time has passed, in which case it throws an exception.
collect
in class Collector
TimeLimitingCollector.TimeExceededException
- if the time allowed has exceeded.
IOException
public void setNextReader(IndexReader reader, int base) throws IOException
Collector
Collector.collect(int)
will correspond to reader.
Add docBase to the current IndexReaders internal document id to re-base ids
in Collector.collect(int)
.
setNextReader
in class Collector
reader
- next IndexReader
IOException
public void setScorer(Scorer scorer) throws IOException
Collector
Collector.collect(int)
. Implementations
that need the score of the current document (passed-in to
Collector.collect(int)
), should save the passed-in Scorer and call
scorer.score() when needed.
setScorer
in class Collector
IOException
public boolean acceptsDocsOutOfOrder()
Collector
true
if this collector does not
require the matching docIDs to be delivered in int sort
order (smallest to largest) to Collector.collect(int)
.
Most Lucene Query implementations will visit
matching docIDs in order. However, some queries
(currently limited to certain cases of BooleanQuery
) can achieve faster searching if the
Collector
allows them to deliver the
docIDs out of order.
Many collectors don't mind getting docIDs out of
order, so it's important to return true
here.
acceptsDocsOutOfOrder
in class Collector
public void setCollector(Collector collector)
collector
- The actual collector performing search functionalitypublic static Counter getGlobalCounter()
Counter
Invoking this creates may create a new instance of TimeLimitingCollector.TimerThread
iff
the global TimeLimitingCollector.TimerThread
has never been accessed before. The thread
returned from this method is started on creation and will be alive unless
you stop the TimeLimitingCollector.TimerThread
via TimeLimitingCollector.TimerThread.stopTimer()
.
Counter
public static TimeLimitingCollector.TimerThread getGlobalTimerThread()
TimeLimitingCollector.TimerThread
.
Invoking this creates may create a new instance of TimeLimitingCollector.TimerThread
iff
the global TimeLimitingCollector.TimerThread
has never been accessed before. The thread
returned from this method is started on creation and will be alive unless
you stop the TimeLimitingCollector.TimerThread
via TimeLimitingCollector.TimerThread.stopTimer()
.
TimeLimitingCollector.TimerThread
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |