diff options
author | Tor Egge <Tor.Egge@broadpark.no> | 2020-06-30 14:10:34 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@broadpark.no> | 2020-06-30 14:10:34 +0200 |
commit | 41127e148f44b2deca171e56142c00a05fc7b683 (patch) | |
tree | 931083457a6a2a7109ad96305cdacf5375f82c5d | |
parent | 5ffa3015103faf9108cd52e183386737a952f388 (diff) |
Use empty search when asked for an underestimate filter for same element blueprint.
-rw-r--r-- | searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.cpp | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.cpp b/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.cpp index 2e21248d21c..4de52af102b 100644 --- a/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.cpp +++ b/searchlib/src/vespa/searchlib/queryeval/same_element_blueprint.cpp @@ -4,6 +4,7 @@ #include "same_element_search.h" #include "field_spec.hpp" #include "andsearch.h" +#include "emptysearch.h" #include <vespa/searchlib/fef/termfieldmatchdata.h> #include <vespa/searchlib/attribute/searchcontextelementiterator.h> #include <vespa/vespalib/objects/visit.hpp> @@ -92,15 +93,19 @@ SameElementBlueprint::createLeafSearch(const search::fef::TermFieldMatchDataArra SearchIterator::UP SameElementBlueprint::createFilterSearch(bool strict, FilterConstraint constraint) const { - MultiSearch::Children sub_searches; - sub_searches.reserve(_terms.size()); - for (size_t i = 0; i < _terms.size(); ++i) { - auto search = _terms[i]->createFilterSearch(strict && (i == 0), constraint); - sub_searches.push_back(std::move(search)); + if (constraint == Blueprint::FilterConstraint::UPPER_BOUND) { + MultiSearch::Children sub_searches; + sub_searches.reserve(_terms.size()); + for (size_t i = 0; i < _terms.size(); ++i) { + auto search = _terms[i]->createFilterSearch(strict && (i == 0), constraint); + sub_searches.push_back(std::move(search)); + } + UnpackInfo unpack_info; + auto search = AndSearch::create(std::move(sub_searches), strict, unpack_info); + return search; + } else { + return std::make_unique<EmptySearch>(); } - UnpackInfo unpack_info; - auto search = AndSearch::create(std::move(sub_searches), strict, unpack_info); - return search; } void |