aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne Juul <arnej@verizonmedia.com>2020-05-28 12:39:58 +0000
committerArne Juul <arnej@verizonmedia.com>2020-05-28 14:06:08 +0000
commitf48cd2de9227c811475797429588e590583dc0fb (patch)
tree6441b5ca13480a4558d50a1a760aaf301336cc0e
parent74fb334833045254e32721a20ed96d69f9c8cfed (diff)
equiv filter is equivalent to OR
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.cpp11
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.h1
2 files changed, 12 insertions, 0 deletions
diff --git a/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.cpp
index cf378c95487..8a798e6cce3 100644
--- a/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.cpp
@@ -75,6 +75,17 @@ EquivBlueprint::createLeafSearch(const fef::TermFieldMatchDataArray &outputs, bo
return SearchIterator::UP(EquivSearch::create(children, std::move(md), childMatch, outputs, strict));
}
+SearchIterator::UP
+EquivBlueprint::createFilterSearch(bool strict, FilterConstraint constraint) const
+{
+ MultiSearch::Children children(_terms.size());
+ for (size_t i = 0; i < _terms.size(); ++i) {
+ children[i] = _terms[i]->createFilterSearch(strict, constraint).release();
+ }
+ UnpackInfo unpack_info;
+ return SearchIterator::UP(OrSearch::create(children, strict, unpack_info));
+}
+
void
EquivBlueprint::visitMembers(vespalib::ObjectVisitor &visitor) const
{
diff --git a/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.h b/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.h
index 59ed5ad5d3d..d1df1e0aada 100644
--- a/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.h
+++ b/searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.h
@@ -25,6 +25,7 @@ public:
EquivBlueprint& addTerm(Blueprint::UP term, double exactness);
SearchIteratorUP createLeafSearch(const fef::TermFieldMatchDataArray &tfmda, bool strict) const override;
+ SearchIteratorUP createFilterSearch(bool strict, FilterConstraint constraint) const override;
void visitMembers(vespalib::ObjectVisitor &visitor) const override;
void fetchPostings(const ExecuteInfo &execInfo) override;