public class TimeLimitingCollector extends Object implements Collector
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.| Modifier and Type | Class and Description | 
|---|---|
| static class  | TimeLimitingCollector.TimeExceededExceptionThrown when elapsed search time exceeds allowed search time. | 
| static class  | TimeLimitingCollector.TimerThreadThread used to timeout search requests. | 
| Constructor and Description | 
|---|
| TimeLimitingCollector(Collector collector,
                     Counter clock,
                     long ticksAllowed)Create a TimeLimitedCollector wrapper over another  Collectorwith a specified timeout. | 
| Modifier and Type | Method and Description | 
|---|---|
| static Counter | getGlobalCounter()Returns the global TimerThreads  Counter | 
| static TimeLimitingCollector.TimerThread | getGlobalTimerThread()Returns the global  TimeLimitingCollector.TimerThread. | 
| LeafCollector | getLeafCollector(LeafReaderContext context)Create a new  collectorto collect the given context. | 
| boolean | isGreedy()Checks if this time limited collector is greedy in collecting the last hit. | 
| boolean | needsScores()Indicates if document scores are needed by this collector. | 
| void | setBaseline()Syntactic sugar for  setBaseline(long)usingCounter.get()on the clock passed to the constructor. | 
| 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. | 
public TimeLimitingCollector(Collector collector, Counter clock, long ticksAllowed)
Collector with a specified timeout.collector - the wrapped Collectorclock - the timer clockticksAllowed - max time allowed for collecting
 hits after which TimeLimitingCollector.TimeExceededException is thrownpublic 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);
setBaseline()public void setBaseline()
setBaseline(long) using Counter.get()
 on the clock passed to the constructor.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.  However, if the timeout is detected in
 getLeafCollector(org.apache.lucene.index.LeafReaderContext) then no current document is collected.setGreedy(boolean)public void setGreedy(boolean greedy)
greedy - true to make this time limited greedyisGreedy()public LeafCollector getLeafCollector(LeafReaderContext context) throws IOException
Collectorcollector to collect the given context.getLeafCollector in interface Collectorcontext - next atomic reader contextIOExceptionpublic boolean needsScores()
CollectorneedsScores in interface Collectortrue if scores are needed.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().
 
Counterpublic 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.TimerThreadCopyright © 2000-2016 Apache Software Foundation. All Rights Reserved.