diff options
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.h | 26 |
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); +}; + +} |