Package org.apache.lucene.monitor
Class ParallelMatcher<T extends QueryMatch>
java.lang.Object
org.apache.lucene.monitor.CandidateMatcher<T>
org.apache.lucene.monitor.ParallelMatcher<T>
- Type Parameters:
T
- the QueryMatch type returned
Matcher class that runs matching queries in parallel.
This class delegates the actual matching to separate CandidateMatcher classes, built from a passed in MatcherFactory.
Use this when individual queries can take a long time to run, and you want to minimize latency. The matcher distributes queries amongst its worker threads using a BlockingQueue, and synchronization overhead may affect performance if the individual queries are very fast.
- See Also:
-
Field Summary
Fields inherited from class org.apache.lucene.monitor.CandidateMatcher
searcher
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
doFinish()
Called when all monitoring of a batch of documents is completestatic <T extends QueryMatch>
MatcherFactory<T> factory
(ExecutorService executor, MatcherFactory<T> matcherFactory) Create a new MatcherFactory for a ParallelMatcherstatic <T extends QueryMatch>
MatcherFactory<T> factory
(ExecutorService executor, MatcherFactory<T> matcherFactory, int threads) Create a new MatcherFactory for a ParallelMatcherprotected void
Runs the supplied query against this CandidateMatcher's set of documents, storing any resulting match, and recording the query in the presearcher hitsIf two matches from the same query are found (for example, two branches of a disjunction), combine them.Methods inherited from class org.apache.lucene.monitor.CandidateMatcher
addMatch, copyMatches
-
Method Details
-
matchQuery
protected void matchQuery(String queryId, Query matchQuery, Map<String, String> metadata) throws IOExceptionDescription copied from class:CandidateMatcher
Runs the supplied query against this CandidateMatcher's set of documents, storing any resulting match, and recording the query in the presearcher hits- Specified by:
matchQuery
in classCandidateMatcher<T extends QueryMatch>
- Parameters:
queryId
- the query idmatchQuery
- the query to runmetadata
- the query metadata- Throws:
IOException
- on IO errors
-
resolve
Description copied from class:CandidateMatcher
If two matches from the same query are found (for example, two branches of a disjunction), combine them.- Specified by:
resolve
in classCandidateMatcher<T extends QueryMatch>
- Parameters:
match1
- the first match foundmatch2
- the second match found- Returns:
- a Match object that combines the two
-
doFinish
protected void doFinish()Description copied from class:CandidateMatcher
Called when all monitoring of a batch of documents is complete- Overrides:
doFinish
in classCandidateMatcher<T extends QueryMatch>
-
factory
public static <T extends QueryMatch> MatcherFactory<T> factory(ExecutorService executor, MatcherFactory<T> matcherFactory, int threads) Create a new MatcherFactory for a ParallelMatcher- Type Parameters:
T
- the type of QueryMatch generated- Parameters:
executor
- the ExecutorService to usematcherFactory
- the MatcherFactory to use to create submatchersthreads
- the number of threads to use
-
factory
public static <T extends QueryMatch> MatcherFactory<T> factory(ExecutorService executor, MatcherFactory<T> matcherFactory) Create a new MatcherFactory for a ParallelMatcherThis factory will create a ParallelMatcher that uses as many threads as there are cores available to the JVM (as determined by
Runtime.getRuntime().availableProcessors()
).- Type Parameters:
T
- the type of QueryMatch generated- Parameters:
executor
- the ExecutorService to usematcherFactory
- the MatcherFactory to use to create submatchers
-