Class TermFilteredPresearcher

  • Direct Known Subclasses:
    MultipassTermFilteredPresearcher

    public class TermFilteredPresearcher
    extends Presearcher
    Presearcher implementation that uses terms extracted from queries to index them in the Monitor, and builds a disjunction from terms in a document to match them. Handling of queries that do not support term extraction through the QueryVisitor API can be configured by passing a list of CustomQueryHandler implementations. Filtering by additional fields can be configured by passing a set of field names. Documents that contain values in those fields will only be checked against MonitorQuery instances that have the same fieldname-value mapping in their metadata.
    • Field Detail

      • DEFAULT_WEIGHTOR

        public static final TermWeightor DEFAULT_WEIGHTOR
        The default TermWeightor, weighting by token length
      • filterFields

        private final java.util.Set<java.lang.String> filterFields
      • QUERYFIELDTYPE

        static final FieldType QUERYFIELDTYPE
    • Constructor Detail

      • TermFilteredPresearcher

        public TermFilteredPresearcher()
        Creates a new TermFilteredPresearcher using the default term weighting
      • TermFilteredPresearcher

        public TermFilteredPresearcher​(TermWeightor weightor,
                                       java.util.List<CustomQueryHandler> customQueryHandlers,
                                       java.util.Set<java.lang.String> filterFields)
        Creates a new TermFilteredPresearcher
        Parameters:
        weightor - the TermWeightor
        customQueryHandlers - A list of custom query handlers to extract terms from non-core queries
        filterFields - A set of fields to filter on
    • Method Detail

      • buildQuery

        public final Query buildQuery​(LeafReader reader,
                                      java.util.function.BiPredicate<java.lang.String,​BytesRef> termAcceptor)
        Description copied from class: Presearcher
        Build a query for a Monitor's queryindex from a LeafReader over a set of documents to monitor.
        Specified by:
        buildQuery in class Presearcher
        Parameters:
        reader - a LeafReader over the input documents
        termAcceptor - a predicate indicating if a term should be added to the query
        Returns:
        a Query to run over a Monitor's queryindex
      • buildFilterFields

        private Query buildFilterFields​(LeafReader reader)
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • buildFilterClause

        private Query buildFilterClause​(LeafReader reader,
                                        java.lang.String field)
                                 throws java.io.IOException
        Throws:
        java.io.IOException
      • indexQuery

        public final Document indexQuery​(Query query,
                                         java.util.Map<java.lang.String,​java.lang.String> metadata)
        Description copied from class: Presearcher
        Build a lucene Document to index the query in a Monitor's queryindex
        Specified by:
        indexQuery in class Presearcher
        Parameters:
        query - the Query to index
        metadata - a Map of arbitrary query metadata
        Returns:
        a lucene Document to add to the queryindex
      • buildQueryDocument

        protected Document buildQueryDocument​(QueryTree querytree)
        Builds a Document from the terms extracted from a query
      • collectTerms

        protected java.util.Map<java.lang.String,​BytesRefHash> collectTerms​(QueryTree querytree)
        Collects terms from a QueryTree and maps them per-field