diff options
author | Arne Juul <arnej@verizonmedia.com> | 2020-05-28 12:39:58 +0000 |
---|---|---|
committer | Arne Juul <arnej@verizonmedia.com> | 2020-05-28 14:06:08 +0000 |
commit | f48cd2de9227c811475797429588e590583dc0fb (patch) | |
tree | 6441b5ca13480a4558d50a1a760aaf301336cc0e | |
parent | 74fb334833045254e32721a20ed96d69f9c8cfed (diff) |
equiv filter is equivalent to OR
-rw-r--r-- | searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.cpp | 11 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/queryeval/equiv_blueprint.h | 1 |
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; |