diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-06-23 17:37:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-23 17:37:16 +0200 |
commit | 316b44c13d886ef9ff50b040f4a01f38dfd3f94c (patch) | |
tree | 29dcb005a30d4e0b6cca5d93ec5bfffc38b582c9 | |
parent | 11b1d121d9e8b41643f814ad0729bc8a4a636d13 (diff) | |
parent | 9565ad731e3f27da3b54ce4fce186c0afa6d04a7 (diff) |
Merge pull request #23206 from vespa-engine/arnej/rename-features-streaming
perform feature renaming in streaming also
4 files changed, 15 insertions, 6 deletions
diff --git a/streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp b/streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp index c8e2bef1016..9715b44b27b 100644 --- a/streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp +++ b/streamingvisitors/src/tests/hitcollector/hitcollector_test.cpp @@ -283,11 +283,13 @@ HitCollectorTest::testFeatureSet() MyRankProgram rankProgram; FeatureResolver resolver(rankProgram.get_resolver()); - search::FeatureSet::SP sf = hc.getFeatureSet(rankProgram, resolver); + search::StringStringMap renames; + renames["bar"] = "qux"; + search::FeatureSet::SP sf = hc.getFeatureSet(rankProgram, resolver, renames); EXPECT_EQUAL(sf->getNames().size(), 3u); EXPECT_EQUAL(sf->getNames()[0], "foo"); - EXPECT_EQUAL(sf->getNames()[1], "bar"); + EXPECT_EQUAL(sf->getNames()[1], "qux"); EXPECT_EQUAL(sf->getNames()[2], "baz"); EXPECT_EQUAL(sf->numFeatures(), 3u); EXPECT_EQUAL(sf->numDocs(), 3u); diff --git a/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp b/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp index d11659cfb77..bded8af16cc 100644 --- a/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/hitcollector.cpp @@ -143,7 +143,8 @@ HitCollector::fillSearchResult(vdslib::SearchResult & searchResult) FeatureSet::SP HitCollector::getFeatureSet(IRankProgram &rankProgram, - const search::fef::FeatureResolver &resolver) + const search::fef::FeatureResolver &resolver, + const search::StringStringMap &feature_rename_map) { if (resolver.num_features() == 0 || _hits.empty()) { return FeatureSet::SP(new FeatureSet()); @@ -152,7 +153,11 @@ HitCollector::getFeatureSet(IRankProgram &rankProgram, std::vector<vespalib::string> names; names.reserve(resolver.num_features()); for (size_t i = 0; i < resolver.num_features(); ++i) { - names.emplace_back(resolver.name_of(i)); + vespalib::string name = resolver.name_of(i); + if (feature_rename_map.contains(name)) { + name = feature_rename_map[name]; + } + names.emplace_back(name); } FeatureSet::SP retval = FeatureSet::SP(new FeatureSet(names, _hits.size())); for (const Hit & hit : _hits) { diff --git a/streamingvisitors/src/vespa/searchvisitor/hitcollector.h b/streamingvisitors/src/vespa/searchvisitor/hitcollector.h index a7bfa5a51b1..d6a05dc4f9e 100644 --- a/streamingvisitors/src/vespa/searchvisitor/hitcollector.h +++ b/streamingvisitors/src/vespa/searchvisitor/hitcollector.h @@ -3,6 +3,7 @@ #pragma once #include <vespa/searchlib/common/featureset.h> +#include <vespa/searchlib/common/stringmap.h> #include <vespa/searchlib/fef/matchdata.h> #include <vespa/vdslib/container/searchresult.h> #include <vespa/vsm/common/docsum.h> @@ -132,7 +133,8 @@ public: * @param resolver feature resolver, gives feature names and values **/ search::FeatureSet::SP getFeatureSet(IRankProgram &rankProgram, - const search::fef::FeatureResolver &resolver); + const search::fef::FeatureResolver &resolver, + const search::StringStringMap &feature_rename_map); }; diff --git a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp index e31341c466c..24925bd67ee 100644 --- a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp @@ -212,7 +212,7 @@ RankProcessor::calculateFeatureSet() search::fef::FeatureResolver resolver(rankProgram.get_seeds(false)); LOG(debug, "Feature handles: numNames(%ld)", resolver.num_features()); RankProgramWrapper wrapper(*_match_data); - FeatureSet::SP sf = _hitCollector->getFeatureSet(wrapper, resolver); + FeatureSet::SP sf = _hitCollector->getFeatureSet(wrapper, resolver, _rankSetup.get_feature_rename_map()); LOG(debug, "Feature set: numFeatures(%u), numDocs(%u)", sf->numFeatures(), sf->numDocs()); return sf; } |