summaryrefslogtreecommitdiffstats
path: root/streamingvisitors
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2023-05-03 23:43:15 +0200
committerTor Egge <Tor.Egge@online.no>2023-05-03 23:43:15 +0200
commit1efbc328c450c86deac126f2d5023863bbbbeffc (patch)
tree78b7121c3966c13c6b2181cb5dec3184c18ad1b0 /streamingvisitors
parentf4442c9332f73e21be58cc538fca9851120b7553 (diff)
Factor out extraction of search cluster parameter.
Diffstat (limited to 'streamingvisitors')
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp26
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);