diff options
Diffstat (limited to 'streamingvisitors/src/vespa/searchvisitor')
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); |