summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-10-18 20:07:08 +0200
committerGitHub <noreply@github.com>2022-10-18 20:07:08 +0200
commitf92740d98dda25445011fcc7f974d7a881d44683 (patch)
tree2950bc354b1ec761620fced514627ec4e4408edc
parent7a8571355a737aab02934ad5cf9fc8521c429b54 (diff)
parent19e7d644bd4091921ebd3ab2facfbd27098659f4 (diff)
Merge pull request #24495 from vespa-engine/havardpe/matches-meta-predicate-for-iterators
expose all-documents predicate for iterators
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/emptysearch.h1
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/full_search.h1
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/searchiterator.h6
3 files changed, 8 insertions, 0 deletions
diff --git a/searchlib/src/vespa/searchlib/queryeval/emptysearch.h b/searchlib/src/vespa/searchlib/queryeval/emptysearch.h
index 897decb456b..c12ce33d6ab 100644
--- a/searchlib/src/vespa/searchlib/queryeval/emptysearch.h
+++ b/searchlib/src/vespa/searchlib/queryeval/emptysearch.h
@@ -21,6 +21,7 @@ protected:
setAtEnd();
}
virtual Trinary is_strict() const override;
+ Trinary matches_any() const override { return Trinary::False; }
public:
EmptySearch();
diff --git a/searchlib/src/vespa/searchlib/queryeval/full_search.h b/searchlib/src/vespa/searchlib/queryeval/full_search.h
index 81c9125807e..df73f24b174 100644
--- a/searchlib/src/vespa/searchlib/queryeval/full_search.h
+++ b/searchlib/src/vespa/searchlib/queryeval/full_search.h
@@ -21,6 +21,7 @@ private:
void or_hits_into(BitVector &result, uint32_t begin_id) override;
void and_hits_into(BitVector &result, uint32_t begin_id) override;
BitVector::UP get_hits(uint32_t begin_id) override;
+ Trinary matches_any() const override { return Trinary::True; }
public:
FullSearch();
diff --git a/searchlib/src/vespa/searchlib/queryeval/searchiterator.h b/searchlib/src/vespa/searchlib/queryeval/searchiterator.h
index 3a57d15b1e9..38a11b4d960 100644
--- a/searchlib/src/vespa/searchlib/queryeval/searchiterator.h
+++ b/searchlib/src/vespa/searchlib/queryeval/searchiterator.h
@@ -355,6 +355,12 @@ public:
virtual Trinary is_strict() const { return Trinary::Undefined; }
+ // will this iterator match any document?
+ // (True -> all documents match)
+ // (False -> no documents match)
+ // (Undefined -> use seek to find out)
+ // number of matches: (False <= Undefined <= True)
+ virtual Trinary matches_any() const { return Trinary::Undefined; }
};
}