diff options
author | Tor Egge <Tor.Egge@online.no> | 2024-01-15 22:46:28 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2024-01-15 22:46:28 +0100 |
commit | efcb44aedd2f718da7f7b6e7321b72e4eb7efff2 (patch) | |
tree | 33dfbdaf244809c342c81883fc80e9ecbe066895 /streamingvisitors/src | |
parent | c192799da15e08da6d21b98e22c1e618d81a646e (diff) |
Support matched-elements-only for WeightedSetTerm.
Diffstat (limited to 'streamingvisitors/src')
-rw-r--r-- | streamingvisitors/src/vespa/searchvisitor/matching_elements_filler.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
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 <vespa/searchlib/common/matching_elements.h> #include <vespa/searchlib/common/matching_elements_fields.h> +#include <vespa/searchlib/query/streaming/weighted_set_term.h> #include <vespa/vsm/searcher/fieldsearcher.h> #include <vespa/vdslib/container/searchresult.h> #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<WeightedSetTerm>(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<QueryTerm>(query_node)) { if (fields.has_struct_field(query_term->getIndex())) { _sub_field_terms.emplace_back(fields.get_enclosing_field(query_term->getIndex()), query_term); |