aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-09-25 19:02:05 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2023-09-25 19:02:05 +0000
commit5ba502788de23a1c2dbdc2d360487c6de3be3943 (patch)
treee3c47027277cdc4dc27676c6f14dd798bc771cc6 /searchlib
parent5b06b3c291cc6fe7d9a1efcfde75a7ae9d15f089 (diff)
If tfmd is not needed, use the optimized simple OR filter.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp3
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.h13
2 files changed, 7 insertions, 9 deletions
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp
index b4cdd621b71..71ea2a67299 100644
--- a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp
@@ -482,6 +482,9 @@ DirectWeightedSetBlueprint<SearchType>::createLeafSearch(const TermFieldMatchDat
_attr.create(r.posting_idx, iterators);
}
bool field_is_filter = getState().fields()[0].isFilter();
+ if (field_is_filter && tfmda[0]->isNotNeeded()) {
+ return attribute::DocumentWeightOrFilterSearch::create(std::move(iterators));
+ }
return SearchType::create(*tfmda[0], field_is_filter, _weights, std::move(iterators));
}
diff --git a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.h b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.h
index e3e12c27f28..b30d3bc3301 100644
--- a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.h
+++ b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.h
@@ -10,12 +10,9 @@
#include <memory>
#include <vector>
-namespace search {
-namespace fef {
-class TermFieldMatchData;
-} // namespace fef
+namespace search::fef { class TermFieldMatchData; }
-namespace queryeval {
+namespace search::queryeval {
class Blueprint;
@@ -26,7 +23,7 @@ class Blueprint;
class WeightedSetTermSearch : public SearchIterator
{
protected:
- WeightedSetTermSearch() {}
+ WeightedSetTermSearch() = default;
public:
// TODO: pass ownership with unique_ptr
@@ -47,6 +44,4 @@ public:
virtual void find_matching_elements(uint32_t docid, const std::vector<std::unique_ptr<Blueprint>> &child_blueprints, std::vector<uint32_t> &dst) = 0;
};
-} // namespace search::queryeval
-} // namespace search
-
+}