diff options
author | Arne H Juul <arnej@yahooinc.com> | 2022-06-22 15:15:33 +0000 |
---|---|---|
committer | Arne H Juul <arnej@yahooinc.com> | 2022-06-22 15:15:33 +0000 |
commit | 9565ad731e3f27da3b54ce4fce186c0afa6d04a7 (patch) | |
tree | 20dca074349243778be191fddf39f244da802b15 /streamingvisitors | |
parent | 52a552f10e1767a626fd7aa0a17d6f60dc1ad096 (diff) |
perform feature renaming in streaming also
Diffstat (limited to 'streamingvisitors')
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; } |