Package org.apache.lucene.monitor
Class PartitionMatcher<T extends QueryMatch>
java.lang.Object
org.apache.lucene.monitor.CandidateMatcher<T>
org.apache.lucene.monitor.PartitionMatcher<T>
- Type Parameters:
T
- the type of QueryMatch to return
A multi-threaded matcher that collects all possible matches in one pass, and then partitions them
amongst a number of worker threads to perform the actual matching.
This class delegates the matching to separate CandidateMatcher classes, built from a passed in MatcherFactory.
Use this if your query sets contain large numbers of very fast queries, where the
synchronization overhead of ParallelMatcher
can outweigh the benefit of multithreading.
- 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 PartitionMatcherstatic <T extends QueryMatch>
MatcherFactory<T>factory
(ExecutorService executor, MatcherFactory<T> matcherFactory, int threads) Create a new MatcherFactory for a PartitionMatcherprotected 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
Description 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
-
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 PartitionMatcher- 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 PartitionMatcherThis factory will create a PartitionMatcher 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
-