diff options
Diffstat (limited to 'searchlib/src/vespa/searchlib/query/streaming')
3 files changed, 18 insertions, 0 deletions
diff --git a/searchlib/src/vespa/searchlib/query/streaming/query.cpp b/searchlib/src/vespa/searchlib/query/streaming/query.cpp index 4773827c036..309edf4d472 100644 --- a/searchlib/src/vespa/searchlib/query/streaming/query.cpp +++ b/searchlib/src/vespa/searchlib/query/streaming/query.cpp @@ -126,6 +126,10 @@ TrueNode::evaluate() const return true; } +bool FalseNode::evaluate() const { + return false; +} + bool AndQueryNode::evaluate() const { diff --git a/searchlib/src/vespa/searchlib/query/streaming/query.h b/searchlib/src/vespa/searchlib/query/streaming/query.h index 75388d564ee..d77bb7f0f65 100644 --- a/searchlib/src/vespa/searchlib/query/streaming/query.h +++ b/searchlib/src/vespa/searchlib/query/streaming/query.h @@ -49,6 +49,14 @@ public: bool evaluate() const override; }; +/** False operator. Matches nothing. */ +class FalseNode : public QueryConnector +{ +public: + FalseNode() : QueryConnector("AND") { } + bool evaluate() const override; +}; + /** N-ary Or operator that simply ANDs all the nodes together. */ diff --git a/searchlib/src/vespa/searchlib/query/streaming/querynode.cpp b/searchlib/src/vespa/searchlib/query/streaming/querynode.cpp index 38939e3a8a4..060573861d9 100644 --- a/searchlib/src/vespa/searchlib/query/streaming/querynode.cpp +++ b/searchlib/src/vespa/searchlib/query/streaming/querynode.cpp @@ -64,6 +64,12 @@ QueryNode::Build(const QueryNode * parent, const QueryNodeResultFactory & factor } } break; + case ParseItem::ITEM_TRUE: + qn = std::make_unique<TrueNode>(); + break; + case ParseItem::ITEM_FALSE: + qn = std::make_unique<FalseNode>(); + break; case ParseItem::ITEM_GEO_LOCATION_TERM: // TODO implement this: // vespalib::string field = queryRep.getIndexName(); |