summaryrefslogtreecommitdiffstats
path: root/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahooinc.com>2023-04-20 13:53:05 +0000
committerGeir Storli <geirst@yahooinc.com>2023-04-20 14:07:29 +0000
commitea513ec5e898b82c97a1a161c06698843bf43d69 (patch)
tree32187aaf1cb1274c791c75754438e74bfa67f91a /streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
parent687be0d6e22caca23708de1493fb483069bbab0a (diff)
Provide FieldPathMap and IQueryEnvironment when preparing streaming searchers.
This is required to prepare the NearestNeighborFieldSearcher.
Diffstat (limited to 'streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp')
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
index 2caf2de1d0b..7dc0c05cfaa 100644
--- a/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/searchvisitor.cpp
@@ -387,7 +387,6 @@ void SearchVisitor::init(const Parameters & params)
StringFieldIdTMap fieldsInQuery;
setupFieldSearchers(additionalFields, fieldsInQuery);
- setupSnippetModifiers();
setupScratchDocument(fieldsInQuery);
@@ -400,9 +399,18 @@ void SearchVisitor::init(const Parameters & params)
const RankManager * rm = _env.getRankManager(searchCluster);
_rankController.setRankManagerSnapshot(rm->getSnapshot());
_rankController.setupRankProcessors(_query, location, wantedSummaryCount, _attrMan, _attributeFields);
- // Depends on hitCollector setup.
+
+ // This depends on _fieldPathMap (from setupScratchDocument),
+ // and IQueryEnvironment (from setupRankProcessors).
+ setupSnippetModifiers();
+
+ // Depends on hitCollector setup and _snippetModifierManager
setupDocsumObjects();
+ // This depends on _fieldPathMap (from setupScratchDocument),
+ // and IQueryEnvironment (from setupRankProcessors).
+ prepare_field_searchers();
+
} else {
LOG(warning, "No query received");
}
@@ -732,9 +740,14 @@ SearchVisitor::setupFieldSearchers(const std::vector<vespalib::string> & additio
_fieldSearchSpecMap.buildFieldsInQuery(_query, fieldsInQuery);
// Connect field names in the query to field searchers
_fieldSearchSpecMap.buildSearcherMap(fieldsInQuery.map(), _fieldSearcherMap);
+}
+void
+SearchVisitor::prepare_field_searchers()
+{
// prepare the field searchers
- _fieldSearcherMap.prepare(_fieldSearchSpecMap.documentTypeMap(), _searchBuffer, _query);
+ _fieldSearcherMap.prepare(_fieldSearchSpecMap.documentTypeMap(), _searchBuffer, _query,
+ *_fieldPathMap, _rankController.getRankProcessor()->get_query_env());
}
void
@@ -742,7 +755,8 @@ SearchVisitor::setupSnippetModifiers()
{
QueryTermList qtl;
_query.getLeafs(qtl);
- _snippetModifierManager.setup(qtl, _fieldSearchSpecMap.specMap(), _fieldSearchSpecMap.documentTypeMap().begin()->second);
+ _snippetModifierManager.setup(qtl, _fieldSearchSpecMap.specMap(), _fieldSearchSpecMap.documentTypeMap().begin()->second,
+ *_fieldPathMap, _rankController.getRankProcessor()->get_query_env());
}
void