org.apache.lucene.queryParser.standard.processors
Class MultiFieldQueryNodeProcessor

java.lang.Object
  extended by org.apache.lucene.queryParser.core.processors.QueryNodeProcessorImpl
      extended by org.apache.lucene.queryParser.standard.processors.MultiFieldQueryNodeProcessor
All Implemented Interfaces:
QueryNodeProcessor

public class MultiFieldQueryNodeProcessor
extends QueryNodeProcessorImpl

This processor is used to expand terms so the query looks for the same term in different fields. It also boosts a query based on its field.

This processor looks for every FieldableNode contained in the query node tree. If a FieldableNode is found, it checks if there is a StandardQueryConfigHandler.ConfigurationKeys.MULTI_FIELDS defined in the QueryConfigHandler. If there is, the FieldableNode is cloned N times and the clones are added to a BooleanQueryNode together with the original node. N is defined by the number of fields that it will be expanded to. The BooleanQueryNode is returned.

See Also:
StandardQueryConfigHandler.ConfigurationKeys.MULTI_FIELDS

Constructor Summary
MultiFieldQueryNodeProcessor()
           
 
Method Summary
protected  QueryNode postProcessNode(QueryNode node)
          This method is invoked for every node when walking up the tree.
protected  QueryNode preProcessNode(QueryNode node)
          This method is invoked for every node when walking down the tree.
protected  void processChildren(QueryNode queryTree)
          This method is called every time a child is processed.
protected  List<QueryNode> setChildrenOrder(List<QueryNode> children)
          This method is invoked for every node that has at least on child.
 
Methods inherited from class org.apache.lucene.queryParser.core.processors.QueryNodeProcessorImpl
getQueryConfigHandler, process, setQueryConfigHandler
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MultiFieldQueryNodeProcessor

public MultiFieldQueryNodeProcessor()
Method Detail

postProcessNode

protected QueryNode postProcessNode(QueryNode node)
                             throws QueryNodeException
Description copied from class: QueryNodeProcessorImpl
This method is invoked for every node when walking up the tree.

Specified by:
postProcessNode in class QueryNodeProcessorImpl
Parameters:
node - node the query node to be post-processed
Returns:
a query node
Throws:
QueryNodeException - if something goes wrong during the query node processing

processChildren

protected void processChildren(QueryNode queryTree)
                        throws QueryNodeException
Description copied from class: QueryNodeProcessorImpl
This method is called every time a child is processed.

Overrides:
processChildren in class QueryNodeProcessorImpl
Parameters:
queryTree - the query node child to be processed
Throws:
QueryNodeException - if something goes wrong during the query node processing

preProcessNode

protected QueryNode preProcessNode(QueryNode node)
                            throws QueryNodeException
Description copied from class: QueryNodeProcessorImpl
This method is invoked for every node when walking down the tree.

Specified by:
preProcessNode in class QueryNodeProcessorImpl
Parameters:
node - the query node to be pre-processed
Returns:
a query node
Throws:
QueryNodeException - if something goes wrong during the query node processing

setChildrenOrder

protected List<QueryNode> setChildrenOrder(List<QueryNode> children)
                                    throws QueryNodeException
Description copied from class: QueryNodeProcessorImpl
This method is invoked for every node that has at least on child. It's invoked right before QueryNodeProcessorImpl.postProcessNode(QueryNode) is invoked.

Specified by:
setChildrenOrder in class QueryNodeProcessorImpl
Parameters:
children - the list containing all current node's children
Returns:
a new list containing all children that should be set to the current node
Throws:
QueryNodeException - if something goes wrong during the query node processing