org.terrier.querying.parser
Class MultiTermQuery

java.lang.Object
  extended by org.terrier.querying.parser.Query
      extended by org.terrier.querying.parser.MultiTermQuery
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable
Direct Known Subclasses:
DisjunctiveQuery, ExplicitMultiTermQuery, PhraseQuery, SegmentQuery

public class MultiTermQuery
extends Query

Represents a query consisting of more than one terms or other sub-queries, qualified with field, requirement or phrase operators.

Author:
Vassilis Plachouras, Craig Macdonald
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class org.terrier.querying.parser.Query
Query.ForEachQueryNode
 
Field Summary
protected  java.lang.String prefix
           
protected  java.lang.String suffix
           
protected  java.util.ArrayList<Query> v
          A list for holding the sub-queries.
 
Fields inherited from class org.terrier.querying.parser.Query
child, tmpSTQ
 
Constructor Summary
MultiTermQuery()
          A default constructor.
 
Method Summary
 void add(Query query)
          Adds a subquery to this query.
 void add(java.lang.String term)
          Adds a single query term to the query.
 void apply(Query.ForEachQueryNode processor)
          Apply the specified processor to this node.
 boolean applyTermPipeline(TermPipelineAccessor tpa)
          Applies the given term pipeline to the query terms and sub-queries that construct this query.
 java.lang.Object clone()
          Deep copy this Query object
 int getNumberOfTerms()
          Returns the number of terms, or subqueries.
protected  void getTerms(java.util.List<Query> alist)
          Adds all the subqueries and single-term queries to a given array list.
 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)
          Checks all child objects to see if they are FieldQuery objects, they are each called to see if the are controls.
 void obtainQueryTerms(MatchingQueryTerms terms)
          Prepares the query for matching by transforming the query objects to a set of query terms.
 void obtainQueryTerms(MatchingQueryTerms terms, boolean required)
          Prepares the query for matching by transforming the query objects to a set of query terms.
 java.lang.String parseTree()
          Returns the parse tree for the query as a string
 void replace(Query childNode, Query replacement)
          Replace query node
 java.lang.String toString()
          Returns a string representation of the query.
 
Methods inherited from class org.terrier.querying.parser.Query
setChild
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

prefix

protected java.lang.String prefix

suffix

protected java.lang.String suffix

v

protected java.util.ArrayList<Query> v
A list for holding the sub-queries. A LinkedList is ideal as we have no need to access numbered sub-query elements of the query - only be able to iterate throught them.

Constructor Detail

MultiTermQuery

public MultiTermQuery()
A default constructor.

Method Detail

getNumberOfTerms

public int getNumberOfTerms()
Returns the number of terms, or subqueries.

Returns:
int the number of terms, or subqueries of this query.

clone

public java.lang.Object clone()
Deep copy this Query object

Overrides:
clone in class Query

add

public void add(java.lang.String term)
Adds a single query term to the query.

Parameters:
term - String the query term.

add

public void add(Query query)
Adds a subquery to this query.

Parameters:
query - Query a subquery.

toString

public java.lang.String toString()
Returns a string representation of the query.

Specified by:
toString in class Query
Returns:
String the string of this query.

applyTermPipeline

public boolean applyTermPipeline(TermPipelineAccessor tpa)
Applies the given term pipeline to the query terms and sub-queries that construct this query.

Overrides:
applyTermPipeline in class Query
Parameters:
tpa - TermPipelineAccessor the object that gives access to a term pipeline.
Returns:
boolean true if the query is not empty, otherwise returns false.

obtainQueryTerms

public void obtainQueryTerms(MatchingQueryTerms terms)
Prepares the query for matching by transforming the query objects to a set of query terms.

Overrides:
obtainQueryTerms in class Query
Parameters:
terms - MatchingQueryTerms the object which holds the query terms and their modifiers.

obtainQueryTerms

public void obtainQueryTerms(MatchingQueryTerms terms,
                             boolean required)
Prepares the query for matching by transforming the query objects to a set of query terms.

Overrides:
obtainQueryTerms in class Query
Parameters:
terms - MatchingQueryTerms the object which holds the query terms and their modifiers.
required - boolean indicates whether the field query is required or not.

getTerms

protected void getTerms(java.util.List<Query> alist)
Adds all the subqueries and single-term queries to a given array list.

Overrides:
getTerms in class Query
Parameters:
alist - ArrayList the array list in which all the query terms and sub-queries are stored.

obtainControls

public boolean obtainControls(java.util.Set<java.lang.String> allowed,
                              java.util.Map<java.lang.String,java.lang.String> controls)
Checks all child objects to see if they are FieldQuery objects, they are each called to see if the are controls. Child objects which return true are removed from the tree. If all child objects return true then this object is also considered dead, and should be removed.

Overrides:
obtainControls in class Query
Parameters:
allowed - The HashSet of control names that are allowed to be set.
controls - The Hashtable into which child objects much add found controls
Returns:
true if this object should be considered dead (no longer part of the query), false otherwise.

getTermsOf

public 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

Specified by:
getTermsOf in class Query
Parameters:
c - Class a class of queries.
alist - ArrayList the list of query terms.
req - boolean indicates whether the subqueries are required or not.

replace

public void replace(Query childNode,
                    Query replacement)
Replace query node

Parameters:
childNode -
replacement -

obtainAllOf

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

Overrides:
obtainAllOf in class Query

apply

public void apply(Query.ForEachQueryNode processor)
Apply the specified processor to this node. If the processor allows, move to any children nodes.

Overrides:
apply in class Query
Parameters:
processor -

parseTree

public java.lang.String parseTree()
Description copied from class: Query
Returns the parse tree for the query as a string

Specified by:
parseTree in class Query


Terrier 3.5. Copyright © 2004-2011 University of Glasgow