diff options
author | Tor Egge <Tor.Egge@online.no> | 2023-05-03 23:43:15 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2023-05-03 23:43:15 +0200 |
commit | 1efbc328c450c86deac126f2d5023863bbbbeffc (patch) | |
tree | 78b7121c3966c13c6b2181cb5dec3184c18ad1b0 /streamingvisitors/src | |
parent | f4442c9332f73e21be58cc538fca9851120b7553 (diff) |
Factor out extraction of search cluster parameter.
Diffstat (limited to 'streamingvisitors/src')
-rw-r--r-- | streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp index 105196a3249..7a987a39d0e 100644 --- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp +++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp @@ -25,6 +25,7 @@ #include <vespa/vespalib/data/slime/slime.h> #include <vespa/vespalib/text/stringtokenizer.h> #include <vespa/fnet/databuffer.h> +#include <optional> #include <vespa/log/log.h> LOG_SETUP(".visitor.instance.searchvisitor"); @@ -48,6 +49,20 @@ using vsm::FieldPath; using vsm::StorageDocument; using vsm::StringFieldIdTMap; +namespace { + +std::optional<vespalib::string> +extract_search_cluster(const vdslib::Parameters& params) +{ + Parameters::ValueRef searchClusterBlob; + if (params.lookup("searchcluster", searchClusterBlob)) { + return {{searchClusterBlob.data(), searchClusterBlob.size()}}; + } + return std::nullopt; +} + +} + class ForceWordfolderInit { public: @@ -354,11 +369,10 @@ void SearchVisitor::init(const Parameters & params) _summaryGenerator.set_location(valueRef); } - Parameters::ValueRef searchClusterBlob; - if (params.lookup("searchcluster", searchClusterBlob)) { - LOG(spam, "Received searchcluster blob of %zd bytes", searchClusterBlob.size()); - vespalib::string searchCluster(searchClusterBlob.data(), searchClusterBlob.size()); - _vsmAdapter = _env.getVSMAdapter(searchCluster); + auto search_cluster = extract_search_cluster(params); + if (search_cluster.has_value()) { + LOG(spam, "Received searchcluster blob of %zd bytes", search_cluster.value().size()); + _vsmAdapter = _env.getVSMAdapter(search_cluster.value()); if ( params.lookup("sort", valueRef) ) { search::uca::UcaConverterFactory ucaFactory; @@ -396,7 +410,7 @@ void SearchVisitor::init(const Parameters & params) setupAttributeVectorsForSorting(_sortSpec); - const RankManager * rm = _env.getRankManager(searchCluster); + const RankManager * rm = _env.getRankManager(search_cluster.value()); _rankController.setRankManagerSnapshot(rm->getSnapshot()); _rankController.setupRankProcessors(_query, location, wantedSummaryCount, _attrMan, _attributeFields); |