diff options
Diffstat (limited to 'searchlib/src/vespa/searchlib/query/tree/querybuilder.h')
-rw-r--r-- | searchlib/src/vespa/searchlib/query/tree/querybuilder.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/searchlib/src/vespa/searchlib/query/tree/querybuilder.h b/searchlib/src/vespa/searchlib/query/tree/querybuilder.h index a0788f0a777..9631e2afded 100644 --- a/searchlib/src/vespa/searchlib/query/tree/querybuilder.h +++ b/searchlib/src/vespa/searchlib/query/tree/querybuilder.h @@ -21,6 +21,7 @@ #include "predicate_query_term.h" #include "node.h" +#include "const_bool_nodes.h" #include <vespa/searchlib/query/weight.h> #include <stack> @@ -98,6 +99,12 @@ public: // You may specialize these functions for your own traits class to have full // control of the query node instantiation. +template <class NodeTypes> +typename NodeTypes::TrueQueryNode *create_true() { return new typename NodeTypes::TrueQueryNode; } + +template <class NodeTypes> +typename NodeTypes::FalseQueryNode *create_false() { return new typename NodeTypes::FalseQueryNode; } + // Intermediate nodes template <class NodeTypes> typename NodeTypes::And *createAnd() { return new typename NodeTypes::And; } @@ -328,6 +335,12 @@ public: adjustWeight(weight); return addTerm(create_nearest_neighbor_term<NodeTypes>(query_tensor_name, field_name, id, weight, target_num_hits, allow_approximate, explore_additional_hits, distance_threshold)); } + typename NodeTypes::TrueQueryNode &add_true_node() { + return addTerm(create_true<NodeTypes>()); + } + typename NodeTypes::FalseQueryNode &add_false_node() { + return addTerm(create_false<NodeTypes>()); + } }; } |