Class Query

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable
    Direct Known Subclasses:
    FieldQuery, MultiTermQuery, RequirementQuery, SingleTermQuery

    public abstract class Query
    extends java.lang.Object
    implements java.io.Serializable, java.lang.Cloneable
    An abstract class that models a query, that consists of subqueries and query terms. The subqueries can be phrase queries, field queries, required queries, and combinations of those queries.
    Author:
    Vassilis Plachouras & Craig Macdonald
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected Query child
      An encapsulated query.
      protected static SingleTermQuery[] tmpSTQ
      An attribute used constructing arrays of the right type.
    • Constructor Summary

      Constructors 
      Constructor Description
      Query()
      default constructor
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      void apply​(Query.ForEachQueryNode processor)
      Apply the specified processor to this node.
      boolean applyTermPipeline​(TermPipelineAccessor tpa)
      Applies a term pipeline in the query's terms, through the given term pipeline accessor.
      java.lang.Object clone()
      Deep copy this Query object
      protected void getTerms​(java.util.List<Query> alist)
      Returns the terms of the query.
      abstract void getTermsOf​(java.lang.Class<? extends Query> c, java.util.List<Query> alist, boolean req)
      Returns all the query terms, in subqueries that are instances of a given class
      void obtainAllOf​(java.lang.Class<? extends Query> c, java.util.List<Query> a)
      Returns all the queries of the specified class
      boolean obtainControls​(java.util.Set<java.lang.String> allowed, java.util.Map<java.lang.String,​java.lang.String> controls)
      Returns the specified control or false if that control does not exist
      abstract void obtainQueryTerms​(MatchingQueryTerms terms, java.lang.String field, java.lang.Boolean required, java.lang.Double weight)  
      abstract void obtainQueryTerms​(Query.QueryTermsParameter parameters)  
      abstract java.lang.String parseTree()
      Returns the parse tree for the query as a string
      void setChild​(Query q)
      Sets the subquery object of this query.
      abstract java.lang.String toString()
      Force anything concrete to provide toString method
      • Methods inherited from class java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • child

        protected Query child
        An encapsulated query.
      • tmpSTQ

        protected static final SingleTermQuery[] tmpSTQ
        An attribute used constructing arrays of the right type.
    • Constructor Detail

      • Query

        public Query()
        default constructor
    • Method Detail

      • clone

        public java.lang.Object clone()
        Deep copy this Query object
        Overrides:
        clone in class java.lang.Object
      • toString

        public abstract java.lang.String toString()
        Force anything concrete to provide toString method
        Overrides:
        toString in class java.lang.Object
      • parseTree

        public abstract java.lang.String parseTree()
        Returns the parse tree for the query as a string
      • getTermsOf

        public abstract void getTermsOf​(java.lang.Class<? extends Query> c,
                                        java.util.List<Query> alist,
                                        boolean req)
        Returns all the query terms, in subqueries that are instances of a given class
        Parameters:
        c - Class a class of queries.
        alist - ArrayList the list of query terms.
        req - boolean indicates whether it the subqueries are required or not.
      • setChild

        public void setChild​(Query q)
        Sets the subquery object of this query.
        Parameters:
        q - Query the subquery object.
      • applyTermPipeline

        public boolean applyTermPipeline​(TermPipelineAccessor tpa)
        Applies a term pipeline in the query's terms, through the given term pipeline accessor.
        Parameters:
        tpa - TermPipelineAccessor the object that provides access to the term pipeline.
        Returns:
        boolean true if the query is not empty, otherwise returns false.
      • obtainControls

        public boolean obtainControls​(java.util.Set<java.lang.String> allowed,
                                      java.util.Map<java.lang.String,​java.lang.String> controls)
        Returns the specified control or false if that control does not exist
      • obtainQueryTerms

        public abstract void obtainQueryTerms​(MatchingQueryTerms terms,
                                              java.lang.String field,
                                              java.lang.Boolean required,
                                              java.lang.Double weight)
      • getTerms

        protected void getTerms​(java.util.List<Query> alist)
        Returns the terms of the query.
        Parameters:
        alist - A structure that contains the query terms.
      • apply

        public void apply​(Query.ForEachQueryNode processor)
        Apply the specified processor to this node. If the processor allows, move to any children nodes.
        Parameters:
        processor -
      • obtainAllOf

        public void obtainAllOf​(java.lang.Class<? extends Query> c,
                                java.util.List<Query> a)
        Returns all the queries of the specified class