aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/vespa/searchlib/attribute/multi_term_or_filter_search.h
diff options
context:
space:
mode:
Diffstat (limited to 'searchlib/src/vespa/searchlib/attribute/multi_term_or_filter_search.h')
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multi_term_or_filter_search.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/searchlib/src/vespa/searchlib/attribute/multi_term_or_filter_search.h b/searchlib/src/vespa/searchlib/attribute/multi_term_or_filter_search.h
new file mode 100644
index 00000000000..42eb33d2eed
--- /dev/null
+++ b/searchlib/src/vespa/searchlib/attribute/multi_term_or_filter_search.h
@@ -0,0 +1,26 @@
+// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "i_direct_posting_store.h"
+#include <vespa/searchlib/queryeval/searchiterator.h>
+
+namespace search::fef { class MatchData; }
+namespace search::attribute {
+
+/**
+ * Filter iterator on top of low-level posting list iterators or regular search iterators with OR semantics.
+ *
+ * Used during calculation of global filter for InTerm, WeightedSetTerm, DotProduct and WandTerm,
+ * or when ranking is not needed for InTerm and WeightedSetTerm.
+ */
+class MultiTermOrFilterSearch : public queryeval::SearchIterator
+{
+protected:
+ MultiTermOrFilterSearch() = default;
+public:
+ static std::unique_ptr<SearchIterator> create(std::vector<DocidIterator>&& children);
+ static std::unique_ptr<SearchIterator> create(std::vector<DocidWithWeightIterator>&& children);
+ static std::unique_ptr<SearchIterator> create(const std::vector<SearchIterator *>& children,
+ std::unique_ptr<fef::MatchData> md);
+};
+
+}