aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahooinc.com>2023-12-18 17:56:45 +0100
committerGitHub <noreply@github.com>2023-12-18 17:56:45 +0100
commit9b8ca63f91db64ee4c45e49f6656b81aa7595c76 (patch)
tree76f63d14ee53972b4a86d013cb261f217de25b45
parent9d8f942dedffb70a754a77990d55295ed6876fad (diff)
parentadb37ca418c465d07bc0d04be522bf49e4964cbe (diff)
Merge pull request #29697 from vespa-engine/geirst/multi-term-or-filter-search
Rename DocumentWeightOrFilterSearch to MultiTermOrFilterSearch.
-rw-r--r--searchlib/CMakeLists.txt2
-rw-r--r--searchlib/src/tests/attribute/direct_multi_term_blueprint/direct_multi_term_blueprint_test.cpp4
-rw-r--r--searchlib/src/tests/attribute/document_weight_or_filter_search/CMakeLists.txt10
-rw-r--r--searchlib/src/tests/attribute/multi_term_or_filter_search/CMakeLists.txt10
-rw-r--r--searchlib/src/tests/attribute/multi_term_or_filter_search/multi_term_or_filter_search_test.cpp (renamed from searchlib/src/tests/attribute/document_weight_or_filter_search/document_weight_or_filter_search_test.cpp)44
-rw-r--r--searchlib/src/vespa/searchlib/attribute/CMakeLists.txt2
-rw-r--r--searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp5
-rw-r--r--searchlib/src/vespa/searchlib/attribute/direct_multi_term_blueprint.hpp4
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multi_term_or_filter_search.cpp (renamed from searchlib/src/vespa/searchlib/attribute/document_weight_or_filter_search.cpp)28
-rw-r--r--searchlib/src/vespa/searchlib/attribute/multi_term_or_filter_search.h (renamed from searchlib/src/vespa/searchlib/attribute/document_weight_or_filter_search.h)10
-rw-r--r--searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp4
11 files changed, 62 insertions, 61 deletions
diff --git a/searchlib/CMakeLists.txt b/searchlib/CMakeLists.txt
index 219439a1224..d46d9b57789 100644
--- a/searchlib/CMakeLists.txt
+++ b/searchlib/CMakeLists.txt
@@ -78,7 +78,6 @@ vespa_define_module(
src/tests/attribute/dfa_fuzzy_matcher
src/tests/attribute/direct_multi_term_blueprint
src/tests/attribute/document_weight_iterator
- src/tests/attribute/document_weight_or_filter_search
src/tests/attribute/enum_attribute_compaction
src/tests/attribute/enum_comparator
src/tests/attribute/enumeratedsave
@@ -87,6 +86,7 @@ vespa_define_module(
src/tests/attribute/guard
src/tests/attribute/imported_attribute_vector
src/tests/attribute/imported_search_context
+ src/tests/attribute/multi_term_or_filter_search
src/tests/attribute/multi_value_mapping
src/tests/attribute/multi_value_read_view
src/tests/attribute/posting_list_merger
diff --git a/searchlib/src/tests/attribute/direct_multi_term_blueprint/direct_multi_term_blueprint_test.cpp b/searchlib/src/tests/attribute/direct_multi_term_blueprint/direct_multi_term_blueprint_test.cpp
index 0245af828dd..67b73f459c9 100644
--- a/searchlib/src/tests/attribute/direct_multi_term_blueprint/direct_multi_term_blueprint_test.cpp
+++ b/searchlib/src/tests/attribute/direct_multi_term_blueprint/direct_multi_term_blueprint_test.cpp
@@ -300,7 +300,7 @@ TEST_P(DirectMultiTermBlueprintTest, filter_iterator_used_for_filter_field_and_r
add_term(1);
add_term(3);
auto itr = create_leaf_search();
- EXPECT_THAT(itr->asString(), StartsWith("search::attribute::DocumentWeightOrFilterSearchImpl"));
+ EXPECT_THAT(itr->asString(), StartsWith("search::attribute::MultiTermOrFilterSearchImpl"));
expect_hits({10, 30, 31}, *itr);
}
@@ -315,7 +315,7 @@ TEST_P(DirectMultiTermBlueprintTest, bitvectors_and_filter_iterator_used_for_fil
expect_or_iterator(*itr, 3);
expect_or_child(*itr, 0, "search::BitVectorIteratorStrictT");
expect_or_child(*itr, 1, "search::BitVectorIteratorStrictT");
- expect_or_child(*itr, 2, "search::attribute::DocumentWeightOrFilterSearchImpl");
+ expect_or_child(*itr, 2, "search::attribute::MultiTermOrFilterSearchImpl");
expect_hits(concat({10, 30, 31}, concat(range(100, 128), range(300, 128))), *itr);
}
diff --git a/searchlib/src/tests/attribute/document_weight_or_filter_search/CMakeLists.txt b/searchlib/src/tests/attribute/document_weight_or_filter_search/CMakeLists.txt
deleted file mode 100644
index b2f86a9ddec..00000000000
--- a/searchlib/src/tests/attribute/document_weight_or_filter_search/CMakeLists.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-vespa_add_executable(searchlib_document_weight_or_filter_search_test_app TEST
- SOURCES
- document_weight_or_filter_search_test.cpp
- DEPENDS
- searchlib
- searchlib_test
- GTest::GTest
-)
-vespa_add_test(NAME searchlib_document_weight_or_filter_search_test_app COMMAND searchlib_document_weight_or_filter_search_test_app)
diff --git a/searchlib/src/tests/attribute/multi_term_or_filter_search/CMakeLists.txt b/searchlib/src/tests/attribute/multi_term_or_filter_search/CMakeLists.txt
new file mode 100644
index 00000000000..4ec5d849ad3
--- /dev/null
+++ b/searchlib/src/tests/attribute/multi_term_or_filter_search/CMakeLists.txt
@@ -0,0 +1,10 @@
+# Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(searchlib_multi_term_or_filter_search_test_app TEST
+ SOURCES
+ multi_term_or_filter_search_test.cpp
+ DEPENDS
+ searchlib
+ searchlib_test
+ GTest::GTest
+)
+vespa_add_test(NAME searchlib_multi_term_or_filter_search_test_app COMMAND searchlib_multi_term_or_filter_search_test_app)
diff --git a/searchlib/src/tests/attribute/document_weight_or_filter_search/document_weight_or_filter_search_test.cpp b/searchlib/src/tests/attribute/multi_term_or_filter_search/multi_term_or_filter_search_test.cpp
index ae4812b5437..dea2702ef0d 100644
--- a/searchlib/src/tests/attribute/document_weight_or_filter_search/document_weight_or_filter_search_test.cpp
+++ b/searchlib/src/tests/attribute/multi_term_or_filter_search/multi_term_or_filter_search_test.cpp
@@ -1,10 +1,10 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include <vespa/vespalib/gtest/gtest.h>
#include <vespa/searchlib/attribute/i_direct_posting_store.h>
-#include <vespa/searchlib/attribute/document_weight_or_filter_search.h>
-#include <vespa/searchlib/queryeval/searchiterator.h>
+#include <vespa/searchlib/attribute/multi_term_or_filter_search.h>
#include <vespa/searchlib/common/bitvector.h>
+#include <vespa/searchlib/queryeval/searchiterator.h>
+#include <vespa/vespalib/gtest/gtest.h>
#define ENABLE_GTEST_MIGRATION
#include <vespa/searchlib/test/searchiteratorverifier.h>
@@ -12,19 +12,19 @@ using PostingList = search::attribute::PostingListTraits<int32_t>::PostingStoreB
using Iterator = search::attribute::PostingListTraits<int32_t>::const_iterator;
using KeyData = PostingList::KeyDataType;
using search::BitVector;
-using search::attribute::DocumentWeightOrFilterSearch;
+using search::attribute::MultiTermOrFilterSearch;
using search::queryeval::SearchIterator;
using vespalib::datastore::EntryRef;
-class DocumentWeightOrFilterSearchTest : public ::testing::Test {
+class MultiTermOrFilterSearchTest : public ::testing::Test {
PostingList _postings;
vespalib::GenerationHandler _gens;
std::vector<EntryRef> _trees;
uint32_t _range_start;
uint32_t _range_end;
public:
- DocumentWeightOrFilterSearchTest();
- ~DocumentWeightOrFilterSearchTest() override;
+ MultiTermOrFilterSearchTest();
+ ~MultiTermOrFilterSearchTest() override;
void inc_generation();
size_t num_trees() const { return _trees.size(); }
Iterator get_tree(size_t idx) const {
@@ -62,7 +62,7 @@ public:
for (size_t i = 0; i < num_trees(); ++i) {
iterators.emplace_back(get_tree(i));
}
- auto result = DocumentWeightOrFilterSearch::create(std::move(iterators));
+ auto result = MultiTermOrFilterSearch::create(std::move(iterators));
result->initRange(_range_start, _range_end);
return result;
};
@@ -121,7 +121,7 @@ public:
}
};
-DocumentWeightOrFilterSearchTest::DocumentWeightOrFilterSearchTest()
+MultiTermOrFilterSearchTest::MultiTermOrFilterSearchTest()
: _postings(true),
_gens(),
_range_start(1),
@@ -129,7 +129,7 @@ DocumentWeightOrFilterSearchTest::DocumentWeightOrFilterSearchTest()
{
}
-DocumentWeightOrFilterSearchTest::~DocumentWeightOrFilterSearchTest()
+MultiTermOrFilterSearchTest::~MultiTermOrFilterSearchTest()
{
for (auto& tree : _trees) {
_postings.clear(tree);
@@ -140,7 +140,7 @@ DocumentWeightOrFilterSearchTest::~DocumentWeightOrFilterSearchTest()
}
void
-DocumentWeightOrFilterSearchTest::inc_generation()
+MultiTermOrFilterSearchTest::inc_generation()
{
_postings.freeze();
_postings.assign_generation(_gens.getCurrentGeneration());
@@ -148,19 +148,19 @@ DocumentWeightOrFilterSearchTest::inc_generation()
_postings.reclaim_memory(_gens.get_oldest_used_generation());
}
-TEST_F(DocumentWeightOrFilterSearchTest, daat_or)
+TEST_F(MultiTermOrFilterSearchTest, daat_or)
{
make_sample_data();
expect_result(eval_daat(*make_iterator()), { 3, 10, 11, 14, 17, 20 });
}
-TEST_F(DocumentWeightOrFilterSearchTest, taat_get_hits)
+TEST_F(MultiTermOrFilterSearchTest, taat_get_hits)
{
make_sample_data();
expect_result(frombv(*make_iterator()->get_hits(get_range_start())), { 3, 10, 11, 14, 17, 20 });
}
-TEST_F(DocumentWeightOrFilterSearchTest, taat_or_hits_into)
+TEST_F(MultiTermOrFilterSearchTest, taat_or_hits_into)
{
make_sample_data();
auto bv = tobv({13, 14});
@@ -168,7 +168,7 @@ TEST_F(DocumentWeightOrFilterSearchTest, taat_or_hits_into)
expect_result(frombv(*bv), { 3, 10, 11, 13, 14, 17, 20 });
}
-TEST_F(DocumentWeightOrFilterSearchTest, taat_and_hits_into)
+TEST_F(MultiTermOrFilterSearchTest, taat_and_hits_into)
{
make_sample_data();
auto bv = tobv({13, 14});
@@ -176,21 +176,21 @@ TEST_F(DocumentWeightOrFilterSearchTest, taat_and_hits_into)
expect_result(frombv(*bv), { 14 });
}
-TEST_F(DocumentWeightOrFilterSearchTest, daat_or_ranged)
+TEST_F(MultiTermOrFilterSearchTest, daat_or_ranged)
{
make_sample_data();
set_range(4, 15);
expect_result(eval_daat(*make_iterator()), {10, 11, 14 });
}
-TEST_F(DocumentWeightOrFilterSearchTest, taat_get_hits_ranged)
+TEST_F(MultiTermOrFilterSearchTest, taat_get_hits_ranged)
{
make_sample_data();
set_range(4, 15);
expect_result(frombv(*make_iterator()->get_hits(get_range_start())), { 10, 11, 14 });
}
-TEST_F(DocumentWeightOrFilterSearchTest, taat_or_hits_into_ranged)
+TEST_F(MultiTermOrFilterSearchTest, taat_or_hits_into_ranged)
{
make_sample_data();
set_range(4, 15);
@@ -199,7 +199,7 @@ TEST_F(DocumentWeightOrFilterSearchTest, taat_or_hits_into_ranged)
expect_result(frombv(*bv), { 10, 11, 13, 14 });
}
-TEST_F(DocumentWeightOrFilterSearchTest, taat_and_hits_into_ranged)
+TEST_F(MultiTermOrFilterSearchTest, taat_and_hits_into_ranged)
{
make_sample_data();
set_range(4, 15);
@@ -211,9 +211,9 @@ TEST_F(DocumentWeightOrFilterSearchTest, taat_and_hits_into_ranged)
namespace {
class Verifier : public search::test::SearchIteratorVerifier {
- DocumentWeightOrFilterSearchTest &_test;
+ MultiTermOrFilterSearchTest &_test;
public:
- Verifier(DocumentWeightOrFilterSearchTest &test, int num_trees)
+ Verifier(MultiTermOrFilterSearchTest &test, int num_trees)
: _test(test)
{
std::vector<std::vector<uint32_t>> trees(num_trees);
@@ -239,7 +239,7 @@ public:
};
-TEST_F(DocumentWeightOrFilterSearchTest, iterator_conformance)
+TEST_F(MultiTermOrFilterSearchTest, iterator_conformance)
{
{
Verifier verifier(*this, 1);
diff --git a/searchlib/src/vespa/searchlib/attribute/CMakeLists.txt b/searchlib/src/vespa/searchlib/attribute/CMakeLists.txt
index f80e8dbe7be..96bd07bc5a3 100644
--- a/searchlib/src/vespa/searchlib/attribute/CMakeLists.txt
+++ b/searchlib/src/vespa/searchlib/attribute/CMakeLists.txt
@@ -43,7 +43,6 @@ vespa_add_library(searchlib_attribute OBJECT
direct_multi_term_blueprint.cpp
distance_metric_utils.cpp
diversity.cpp
- document_weight_or_filter_search.cpp
empty_search_context.cpp
enum_store_compaction_spec.cpp
enum_store_dictionary.cpp
@@ -84,6 +83,7 @@ vespa_add_library(searchlib_attribute OBJECT
multi_numeric_search_context.cpp
multi_string_enum_hint_search_context.cpp
multi_string_enum_search_context.cpp
+ multi_term_or_filter_search.cpp
multi_value_mapping.cpp
multi_value_mapping_base.cpp
multienumattribute.cpp
diff --git a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp
index 3a5f79ef665..b9adcf3b093 100644
--- a/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/attribute_blueprint_factory.cpp
@@ -5,9 +5,8 @@
#include "attribute_object_visitor.h"
#include "attribute_weighted_set_blueprint.h"
#include "direct_multi_term_blueprint.h"
-#include "document_weight_or_filter_search.h"
#include "i_direct_posting_store.h"
-#include "posting_iterator_pack.h"
+#include "multi_term_or_filter_search.h"
#include "predicate_attribute.h"
#include <vespa/eval/eval/value.h>
#include <vespa/searchlib/common/location.h>
@@ -468,7 +467,7 @@ DirectWandBlueprint::createFilterSearch(bool, FilterConstraint constraint) const
for (const IDirectPostingStore::LookupResult &r : _terms) {
_attr.create(r.posting_idx, iterators);
}
- return attribute::DocumentWeightOrFilterSearch::create(std::move(iterators));
+ return attribute::MultiTermOrFilterSearch::create(std::move(iterators));
} else {
return std::make_unique<queryeval::EmptySearch>();
}
diff --git a/searchlib/src/vespa/searchlib/attribute/direct_multi_term_blueprint.hpp b/searchlib/src/vespa/searchlib/attribute/direct_multi_term_blueprint.hpp
index 5ca943a356d..bb6804f22f1 100644
--- a/searchlib/src/vespa/searchlib/attribute/direct_multi_term_blueprint.hpp
+++ b/searchlib/src/vespa/searchlib/attribute/direct_multi_term_blueprint.hpp
@@ -3,7 +3,7 @@
#pragma once
#include "direct_multi_term_blueprint.h"
-#include "document_weight_or_filter_search.h"
+#include "multi_term_or_filter_search.h"
#include <vespa/searchlib/fef/termfieldmatchdata.h>
#include <vespa/searchlib/queryeval/emptysearch.h>
#include <vespa/searchlib/queryeval/filter_wrapper.h>
@@ -101,7 +101,7 @@ DirectMultiTermBlueprint<PostingStoreType, SearchType>::create_search_helper(con
bool use_bit_vector_when_available = is_filter_search || !_attr.has_always_btree_iterator();
auto weights = create_iterators(btree_iterators, bitvectors, use_bit_vector_when_available, *tfmda[0], strict);
if (is_filter_search) {
- auto filter = !btree_iterators.empty() ? attribute::DocumentWeightOrFilterSearch::create(std::move(btree_iterators)) : std::unique_ptr<SearchIterator>();
+ auto filter = !btree_iterators.empty() ? attribute::MultiTermOrFilterSearch::create(std::move(btree_iterators)) : std::unique_ptr<SearchIterator>();
return combine_iterators(std::move(filter), std::move(bitvectors), strict);
}
bool field_is_filter = getState().fields()[0].isFilter();
diff --git a/searchlib/src/vespa/searchlib/attribute/document_weight_or_filter_search.cpp b/searchlib/src/vespa/searchlib/attribute/multi_term_or_filter_search.cpp
index b910e64b665..19668522e17 100644
--- a/searchlib/src/vespa/searchlib/attribute/document_weight_or_filter_search.cpp
+++ b/searchlib/src/vespa/searchlib/attribute/multi_term_or_filter_search.cpp
@@ -1,6 +1,6 @@
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-#include "document_weight_or_filter_search.h"
+#include "multi_term_or_filter_search.h"
#include "posting_iterator_pack.h"
#include <vespa/searchlib/fef/matchdata.h>
#include <vespa/searchlib/queryeval/iterator_pack.h>
@@ -12,13 +12,13 @@ using search::queryeval::SearchIteratorPack;
namespace search::attribute {
template<typename IteratorPack>
-class DocumentWeightOrFilterSearchImpl : public DocumentWeightOrFilterSearch
+class MultiTermOrFilterSearchImpl : public MultiTermOrFilterSearch
{
IteratorPack _children;
void seek_all(uint32_t docId);
public:
- explicit DocumentWeightOrFilterSearchImpl(IteratorPack&& children);
- ~DocumentWeightOrFilterSearchImpl() override;
+ explicit MultiTermOrFilterSearchImpl(IteratorPack&& children);
+ ~MultiTermOrFilterSearchImpl() override;
void doSeek(uint32_t docId) override;
@@ -46,18 +46,18 @@ public:
};
template<typename IteratorPack>
-DocumentWeightOrFilterSearchImpl<IteratorPack>::DocumentWeightOrFilterSearchImpl(IteratorPack&& children)
- : DocumentWeightOrFilterSearch(),
+MultiTermOrFilterSearchImpl<IteratorPack>::MultiTermOrFilterSearchImpl(IteratorPack&& children)
+ : MultiTermOrFilterSearch(),
_children(std::move(children))
{
}
template<typename IteratorPack>
-DocumentWeightOrFilterSearchImpl<IteratorPack>::~DocumentWeightOrFilterSearchImpl() = default;
+MultiTermOrFilterSearchImpl<IteratorPack>::~MultiTermOrFilterSearchImpl() = default;
template<typename IteratorPack>
void
-DocumentWeightOrFilterSearchImpl<IteratorPack>::seek_all(uint32_t docId) {
+MultiTermOrFilterSearchImpl<IteratorPack>::seek_all(uint32_t docId) {
for (uint16_t i = 0; i < _children.size(); ++i) {
uint32_t next = _children.get_docid(i);
if (next < docId) {
@@ -68,7 +68,7 @@ DocumentWeightOrFilterSearchImpl<IteratorPack>::seek_all(uint32_t docId) {
template<typename IteratorPack>
void
-DocumentWeightOrFilterSearchImpl<IteratorPack>::doSeek(uint32_t docId)
+MultiTermOrFilterSearchImpl<IteratorPack>::doSeek(uint32_t docId)
{
uint32_t min_doc_id = endDocId;
for (uint16_t i = 0; i < _children.size(); ++i) {
@@ -96,7 +96,7 @@ create_helper(std::vector<IteratorType>&& children)
} else {
std::sort(children.begin(), children.end(),
[](const auto & a, const auto & b) { return a.size() > b.size(); });
- using OrFilter = DocumentWeightOrFilterSearchImpl<IteratorPackType>;
+ using OrFilter = MultiTermOrFilterSearchImpl<IteratorPackType>;
return std::make_unique<OrFilter>(IteratorPackType(std::move(children)));
}
}
@@ -104,25 +104,25 @@ create_helper(std::vector<IteratorType>&& children)
}
std::unique_ptr<queryeval::SearchIterator>
-DocumentWeightOrFilterSearch::create(std::vector<DocidIterator>&& children)
+MultiTermOrFilterSearch::create(std::vector<DocidIterator>&& children)
{
return create_helper<DocidIterator, DocidIteratorPack>(std::move(children));
}
std::unique_ptr<queryeval::SearchIterator>
-DocumentWeightOrFilterSearch::create(std::vector<DocidWithWeightIterator>&& children)
+MultiTermOrFilterSearch::create(std::vector<DocidWithWeightIterator>&& children)
{
return create_helper<DocidWithWeightIterator, DocidWithWeightIteratorPack>(std::move(children));
}
std::unique_ptr<queryeval::SearchIterator>
-DocumentWeightOrFilterSearch::create(const std::vector<SearchIterator *>& children,
+MultiTermOrFilterSearch::create(const std::vector<SearchIterator *>& children,
std::unique_ptr<fef::MatchData> md)
{
if (children.empty()) {
return std::make_unique<queryeval::EmptySearch>();
} else {
- using OrFilter = DocumentWeightOrFilterSearchImpl<SearchIteratorPack>;
+ using OrFilter = MultiTermOrFilterSearchImpl<SearchIteratorPack>;
return std::make_unique<OrFilter>(SearchIteratorPack(children, std::move(md)));
}
}
diff --git a/searchlib/src/vespa/searchlib/attribute/document_weight_or_filter_search.h b/searchlib/src/vespa/searchlib/attribute/multi_term_or_filter_search.h
index 5ed0dd16d83..42eb33d2eed 100644
--- a/searchlib/src/vespa/searchlib/attribute/document_weight_or_filter_search.h
+++ b/searchlib/src/vespa/searchlib/attribute/multi_term_or_filter_search.h
@@ -7,13 +7,15 @@ namespace search::fef { class MatchData; }
namespace search::attribute {
/**
- * Filter iterator on top of document weight iterators with OR semantics used during
- * calculation of global filter for weighted set terms, wand terms and dot product terms.
+ * 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 DocumentWeightOrFilterSearch : public queryeval::SearchIterator
+class MultiTermOrFilterSearch : public queryeval::SearchIterator
{
protected:
- DocumentWeightOrFilterSearch() = default;
+ MultiTermOrFilterSearch() = default;
public:
static std::unique_ptr<SearchIterator> create(std::vector<DocidIterator>&& children);
static std::unique_ptr<SearchIterator> create(std::vector<DocidWithWeightIterator>&& children);
diff --git a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp
index 1cecbca7660..0929f80a8f0 100644
--- a/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp
+++ b/searchlib/src/vespa/searchlib/queryeval/weighted_set_term_search.cpp
@@ -2,7 +2,7 @@
#include "weighted_set_term_search.h"
#include <vespa/searchlib/common/bitvector.h>
-#include <vespa/searchlib/attribute/document_weight_or_filter_search.h>
+#include <vespa/searchlib/attribute/multi_term_or_filter_search.h>
#include <vespa/vespalib/objects/visit.h>
#include <vespa/searchcommon/attribute/i_search_context.h>
@@ -175,7 +175,7 @@ WeightedSetTermSearch::create(const std::vector<SearchIterator *> &children,
using HeapImpl = WeightedSetTermSearchImpl<vespalib::LeftHeap, SearchIteratorPack>;
if (tmd.isNotNeeded()) {
- return attribute::DocumentWeightOrFilterSearch::create(children, std::move(match_data));
+ return attribute::MultiTermOrFilterSearch::create(children, std::move(match_data));
}
if (children.size() < 128) {