Class PartitionMatcher<T extends QueryMatch>

  • Type Parameters:
    T - the type of QueryMatch to return

    public class PartitionMatcher<T extends QueryMatch>
    extends CandidateMatcher<T>
    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:
    ParallelMatcher
    • Method Detail

      • matchQuery

        protected void matchQuery​(String queryId,
                                  Query matchQuery,
                                  Map<String,​String> metadata)
        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 class CandidateMatcher<T extends QueryMatch>
        Parameters:
        queryId - the query id
        matchQuery - the query to run
        metadata - the query metadata
      • resolve

        public T resolve​(T match1,
                         T match2)
        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 class CandidateMatcher<T extends QueryMatch>
        Parameters:
        match1 - the first match found
        match2 - the second match found
        Returns:
        a Match object that combines the two
      • factory

        public static <T extends QueryMatchMatcherFactory<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 use
        matcherFactory - the MatcherFactory to use to create submatchers
        threads - the number of threads to use
      • factory

        public static <T extends QueryMatchMatcherFactory<T> factory​(ExecutorService executor,
                                                                       MatcherFactory<T> matcherFactory)
        Create a new MatcherFactory for a PartitionMatcher

        This 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 use
        matcherFactory - the MatcherFactory to use to create submatchers