aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/vespa/searchlib/query/tree/querybuilder.h
diff options
context:
space:
mode:
Diffstat (limited to 'searchlib/src/vespa/searchlib/query/tree/querybuilder.h')
-rw-r--r--searchlib/src/vespa/searchlib/query/tree/querybuilder.h13
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>());
+ }
};
}