java.lang.Object
org.apache.lucene.queryparser.flexible.core.builders.QueryTreeBuilder
All Implemented Interfaces:
QueryBuilder
Direct Known Subclasses:
StandardQueryTreeBuilder

public class QueryTreeBuilder extends Object implements QueryBuilder
This class should be used when there is a builder for each type of node.

The type of node may be defined in 2 different ways: - by the field name, when the node implements the FieldableNode interface - by its class, it keeps checking the class and all the interfaces and classes this class implements/extends until it finds a builder for that class/interface

This class always check if there is a builder for the field name before it checks for the node class. So, field name builders have precedence over class builders.

When a builder is found for a node, it's called and the node is passed to the builder. If the returned built object is not null, it's tagged on the node using the tag QUERY_TREE_BUILDER_TAGID.

The children are usually built before the parent node. However, if a builder associated to a node is an instance of QueryTreeBuilder, the node is delegated to this builder and it's responsible to build the node and its children.

See Also:
  • Field Details

    • QUERY_TREE_BUILDER_TAGID

      public static final String QUERY_TREE_BUILDER_TAGID
      This tag is used to tag the nodes in a query tree with the built objects produced from their own associated builder.
  • Constructor Details

  • Method Details

    • setBuilder

      public void setBuilder(CharSequence fieldName, QueryBuilder builder)
      Associates a field name with a builder.
      Parameters:
      fieldName - the field name
      builder - the builder to be associated
    • setBuilder

      public void setBuilder(Class<? extends QueryNode> queryNodeClass, QueryBuilder builder)
      Associates a class with a builder
      Parameters:
      queryNodeClass - the class
      builder - the builder to be associated
    • build

      public Object build(QueryNode queryNode) throws QueryNodeException
      Builds some kind of object from a query tree. Each node in the query tree is built using an specific builder associated to it.
      Specified by:
      build in interface QueryBuilder
      Parameters:
      queryNode - the query tree root node
      Returns:
      the built object
      Throws:
      QueryNodeException - if some node builder throws a QueryNodeException or if there is a node which had no builder associated to it