summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@yahooinc.com>2022-09-26 08:37:42 +0000
committerHåvard Pettersen <havardpe@yahooinc.com>2022-10-18 13:40:29 +0000
commit19e7d644bd4091921ebd3ab2facfbd27098659f4 (patch)
tree2950bc354b1ec761620fced514627ec4e4408edc
parent7a8571355a737aab02934ad5cf9fc8521c429b54 (diff)
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; }
};
}