Module org.apache.lucene.monitor
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate classprivate static classprivate static class -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ExecutorServiceprivate final MatcherFactory<T> private final CandidateMatcher<T> private final List<PartitionMatcher.MatchTask> private final intFields inherited from class org.apache.lucene.monitor.CandidateMatcher
searcher -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivatePartitionMatcher(IndexSearcher searcher, ExecutorService executor, MatcherFactory<T> matcherFactory, int threads) -
Method Summary
Modifier and TypeMethodDescriptionprotected voiddoFinish()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 voidRuns 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, finish, reportError
-
Field Details
-
executor
-
matcherFactory
-
threads
private final int threads -
resolvingMatcher
-
tasks
-
-
Constructor Details
-
PartitionMatcher
private PartitionMatcher(IndexSearcher searcher, ExecutorService executor, MatcherFactory<T> matcherFactory, int threads)
-
-
Method Details
-
matchQuery
Description copied from class:CandidateMatcherRuns the supplied query against this CandidateMatcher's set of documents, storing any resulting match, and recording the query in the presearcher hits- Specified by:
matchQueryin classCandidateMatcher<T extends QueryMatch>- Parameters:
queryId- the query idmatchQuery- the query to runmetadata- the query metadata
-
resolve
Description copied from class:CandidateMatcherIf two matches from the same query are found (for example, two branches of a disjunction), combine them.- Specified by:
resolvein 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:CandidateMatcherCalled when all monitoring of a batch of documents is complete- Overrides:
doFinishin 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
-
partition
-