summaryrefslogtreecommitdiffstats
path: root/streamingvisitors/src/vespa
diff options
context:
space:
mode:
Diffstat (limited to 'streamingvisitors/src/vespa')
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/indexenvironment.cpp11
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/indexenvironment.h2
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/rankmanager.cpp1
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp6
-rw-r--r--streamingvisitors/src/vespa/searchvisitor/rankprocessor.h2
5 files changed, 18 insertions, 4 deletions
diff --git a/streamingvisitors/src/vespa/searchvisitor/indexenvironment.cpp b/streamingvisitors/src/vespa/searchvisitor/indexenvironment.cpp
index 25c8d982f0f..726afcc959b 100644
--- a/streamingvisitors/src/vespa/searchvisitor/indexenvironment.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/indexenvironment.cpp
@@ -2,6 +2,7 @@
#include "indexenvironment.h"
#include <vespa/searchlib/fef/i_ranking_assets_repo.h>
+#include <vespa/searchlib/fef/indexproperties.h>
using namespace search::fef;
@@ -39,6 +40,16 @@ IndexEnvironment::addField(const vespalib::string& name,
}
void
+IndexEnvironment::fixup_fields()
+{
+ for (auto& field : _fields) {
+ if (indexproperties::IsFilterField::check(_properties, field.name())) {
+ field.setFilter(true);
+ }
+ }
+}
+
+void
IndexEnvironment::set_ranking_assets_repo(std::shared_ptr<const IRankingAssetsRepo> ranking_assets_repo)
{
_ranking_assets_repo = std::move(ranking_assets_repo);
diff --git a/streamingvisitors/src/vespa/searchvisitor/indexenvironment.h b/streamingvisitors/src/vespa/searchvisitor/indexenvironment.h
index eed38b3c922..50e6898262d 100644
--- a/streamingvisitors/src/vespa/searchvisitor/indexenvironment.h
+++ b/streamingvisitors/src/vespa/searchvisitor/indexenvironment.h
@@ -78,6 +78,8 @@ public:
bool isAttribute,
search::fef::FieldInfo::DataType data_type);
+ void fixup_fields();
+
search::fef::Properties & getProperties() { return _properties; }
void set_ranking_assets_repo(std::shared_ptr<const search::fef::IRankingAssetsRepo> ranking_assets_repo);
diff --git a/streamingvisitors/src/vespa/searchvisitor/rankmanager.cpp b/streamingvisitors/src/vespa/searchvisitor/rankmanager.cpp
index 7b248faaa51..3efeb8ef168 100644
--- a/streamingvisitors/src/vespa/searchvisitor/rankmanager.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/rankmanager.cpp
@@ -135,6 +135,7 @@ RankManager::Snapshot::initRankSetup(const BlueprintFactory & factory)
_indexEnv.push_back(_protoEnv.current());
IndexEnvironment & ie = _indexEnv.back();
ie.getProperties().import(_properties[i].second);
+ ie.fixup_fields();
}
// set up individual rank setups per rank profile
diff --git a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp
index 825630f057b..2a95bf8251b 100644
--- a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp
+++ b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.cpp
@@ -292,16 +292,16 @@ void
RankProcessor::unpackMatchData(uint32_t docId)
{
_docId = docId;
- unpack_match_data(docId, *_match_data, _query);
+ unpack_match_data(docId, *_match_data, _query, _queryEnv.getIndexEnvironment());
}
void
-RankProcessor::unpack_match_data(uint32_t docid, MatchData &matchData, QueryWrapper& query)
+RankProcessor::unpack_match_data(uint32_t docid, MatchData &matchData, QueryWrapper& query, const search::fef::IIndexEnvironment& index_env)
{
for (auto& term : query.getTermList()) {
auto & qtd = static_cast<QueryTermData &>(term->getQueryItem());
const ITermData &td = qtd.getTermData();
- term->unpack_match_data(docid, td, matchData);
+ term->unpack_match_data(docid, td, matchData, index_env);
}
}
diff --git a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h
index 476ed013d23..f384f7d7acf 100644
--- a/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h
+++ b/streamingvisitors/src/vespa/searchvisitor/rankprocessor.h
@@ -74,7 +74,7 @@ public:
void initForRanking(size_t wantedHitCount, bool use_sort_blob);
void initForDumping(size_t wantedHitCount, bool use_sort_blob);
void unpackMatchData(uint32_t docId);
- static void unpack_match_data(uint32_t docid, search::fef::MatchData& matchData, QueryWrapper& query);
+ static void unpack_match_data(uint32_t docid, search::fef::MatchData& matchData, QueryWrapper& query, const search::fef::IIndexEnvironment& index_env);
void runRankProgram(uint32_t docId);
vespalib::FeatureSet::SP calculateFeatureSet();
vespalib::FeatureSet::SP calculateFeatureSet(search::DocumentIdT docId);