From efcb44aedd2f718da7f7b6e7321b72e4eb7efff2 Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Mon, 15 Jan 2024 22:46:28 +0100 Subject: Support matched-elements-only for WeightedSetTerm. --- .../src/vespa/searchvisitor/matching_elements_filler.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'streamingvisitors') diff --git a/streamingvisitors/src/vespa/searchvisitor/matching_elements_filler.cpp b/streamingvisitors/src/vespa/searchvisitor/matching_elements_filler.cpp index 6474a449272..095141c0359 100644 --- a/streamingvisitors/src/vespa/searchvisitor/matching_elements_filler.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/matching_elements_filler.cpp @@ -3,6 +3,7 @@ #include "matching_elements_filler.h" #include #include +#include #include #include #include "hitcollector.h" @@ -17,6 +18,7 @@ using search::streaming::QueryConnector; using search::streaming::QueryNode; using search::streaming::QueryTerm; using search::streaming::SameElementQueryNode; +using search::streaming::WeightedSetTerm; using vdslib::SearchResult; using vsm::FieldIdTSearcherMap; using vsm::StorageDocument; @@ -79,6 +81,13 @@ Matcher::select_query_nodes(const MatchingElementsFields& fields, const QueryNod if (fields.has_field(same_element->getIndex())) { _same_element_nodes.emplace_back(same_element); } + } else if (auto weighted_set_term = as(query_node)) { + if (fields.has_field(weighted_set_term->getIndex())) { + auto &terms = weighted_set_term->get_terms(); + for (auto& term : terms) { + _sub_field_terms.emplace_back(weighted_set_term->getIndex(), term.get()); + } + } } else if (auto query_term = as(query_node)) { if (fields.has_struct_field(query_term->getIndex())) { _sub_field_terms.emplace_back(fields.get_enclosing_field(query_term->getIndex()), query_term); -- cgit v1.2.3