diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-10-12 20:03:15 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-12 20:03:15 +0200 |
commit | 35155da6c455db4247197560033103e102c04a00 (patch) | |
tree | ba3e98e6230355d80090f596a04a914ca013a1d1 | |
parent | 11f0bdac69a0b252ccb67b129cc74337e0725acd (diff) | |
parent | 488788225bc14663e183d6246dfa5a0338770b55 (diff) |
Merge pull request #19519 from vespa-engine/balder/also-consider-rank-properties-from-config
Consider the execute instructions comming in the rankprofiles config …
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp | 14 | ||||
-rw-r--r-- | searchlib/src/tests/ranksetup/ranksetup_test.cpp | 13 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/fef/ranksetup.cpp | 11 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/fef/ranksetup.h | 20 |
4 files changed, 47 insertions, 11 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp b/searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp index 6a2e4988b2b..ba812e6c79e 100644 --- a/searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp +++ b/searchcore/src/vespa/searchcore/proton/matching/match_tools.cpp @@ -6,11 +6,9 @@ #include <vespa/searchlib/fef/indexproperties.h> #include <vespa/searchlib/fef/ranksetup.h> #include <vespa/searchlib/engine/trace.h> -#include <vespa/searchlib/parsequery/stackdumpiterator.h> #include <vespa/searchlib/attribute/diversity.h> #include <vespa/searchlib/attribute/attribute_operation.h> #include <vespa/searchlib/attribute/attribute_blueprint_params.h> -#include <vespa/searchlib/common/bitvector.h> #include <vespa/log/log.h> LOG_SETUP(".proton.matching.match_tools"); @@ -252,18 +250,18 @@ MatchToolsFactory::createTask(vespalib::stringref attribute, vespalib::stringref } std::unique_ptr<AttributeOperationTask> MatchToolsFactory::createOnMatchTask() const { - return createTask(execute::onmatch::Attribute::lookup(_queryEnv.getProperties()), - execute::onmatch::Operation::lookup(_queryEnv.getProperties())); + return createTask(execute::onmatch::Attribute::lookup(_queryEnv.getProperties(), _rankSetup.getExecuteOnMatch()._attribute), + execute::onmatch::Operation::lookup(_queryEnv.getProperties(), _rankSetup.getExecuteOnMatch()._operation)); } std::unique_ptr<AttributeOperationTask> MatchToolsFactory::createOnReRankTask() const { - return createTask(execute::onrerank::Attribute::lookup(_queryEnv.getProperties()), - execute::onrerank::Operation::lookup(_queryEnv.getProperties())); + return createTask(execute::onrerank::Attribute::lookup(_queryEnv.getProperties(), _rankSetup.getExecuteOnReRank()._attribute), + execute::onrerank::Operation::lookup(_queryEnv.getProperties(), _rankSetup.getExecuteOnReRank()._operation)); } std::unique_ptr<AttributeOperationTask> MatchToolsFactory::createOnSummaryTask() const { - return createTask(execute::onsummary::Attribute::lookup(_queryEnv.getProperties()), - execute::onsummary::Operation::lookup(_queryEnv.getProperties())); + return createTask(execute::onsummary::Attribute::lookup(_queryEnv.getProperties(), _rankSetup.getExecuteOnSummary()._attribute), + execute::onsummary::Operation::lookup(_queryEnv.getProperties(), _rankSetup.getExecuteOnSummary()._operation)); } bool diff --git a/searchlib/src/tests/ranksetup/ranksetup_test.cpp b/searchlib/src/tests/ranksetup/ranksetup_test.cpp index 3d2b5a620de..783405b8255 100644 --- a/searchlib/src/tests/ranksetup/ranksetup_test.cpp +++ b/searchlib/src/tests/ranksetup/ranksetup_test.cpp @@ -522,6 +522,12 @@ void RankSetupTest::testRankSetup() env.getProperties().add(hitcollector::EstimatePoint::NAME, "70"); env.getProperties().add(hitcollector::EstimateLimit::NAME, "80"); env.getProperties().add(hitcollector::RankScoreDropLimit::NAME, "90.5"); + env.getProperties().add(execute::onmatch::Attribute::NAME, "a"); + env.getProperties().add(execute::onmatch::Operation::NAME, "++"); + env.getProperties().add(execute::onrerank::Attribute::NAME, "b"); + env.getProperties().add(execute::onrerank::Operation::NAME, "=7"); + env.getProperties().add(execute::onsummary::Attribute::NAME, "c"); + env.getProperties().add(execute::onsummary::Operation::NAME, "--"); RankSetup rs(_factory, env); rs.configure(); @@ -547,6 +553,13 @@ void RankSetupTest::testRankSetup() EXPECT_EQUAL(rs.getEstimatePoint(), 70u); EXPECT_EQUAL(rs.getEstimateLimit(), 80u); EXPECT_EQUAL(rs.getRankScoreDropLimit(), 90.5); + EXPECT_EQUAL(rs.getExecuteOnMatch()._attribute, "a"); + EXPECT_EQUAL(rs.getExecuteOnMatch()._operation, "++"); + EXPECT_EQUAL(rs.getExecuteOnReRank()._attribute, "b"); + EXPECT_EQUAL(rs.getExecuteOnReRank()._operation, "=7"); + EXPECT_EQUAL(rs.getExecuteOnSummary()._attribute, "c"); + EXPECT_EQUAL(rs.getExecuteOnSummary()._operation, "--"); + } bool diff --git a/searchlib/src/vespa/searchlib/fef/ranksetup.cpp b/searchlib/src/vespa/searchlib/fef/ranksetup.cpp index 18d90f20bd1..19a5a237c7e 100644 --- a/searchlib/src/vespa/searchlib/fef/ranksetup.cpp +++ b/searchlib/src/vespa/searchlib/fef/ranksetup.cpp @@ -64,7 +64,10 @@ RankSetup::RankSetup(const BlueprintFactory &factory, const IIndexEnvironment &i _softTimeoutFactor(0.5), _nearest_neighbor_brute_force_limit(0.05), _global_filter_lower_limit(0.0), - _global_filter_upper_limit(1.0) + _global_filter_upper_limit(1.0), + _executeOnMatch(), + _executeOnReRank(), + _executeOnSummary() { } RankSetup::~RankSetup() = default; @@ -110,6 +113,12 @@ RankSetup::configure() set_nearest_neighbor_brute_force_limit(matching::NearestNeighborBruteForceLimit::lookup(_indexEnv.getProperties())); set_global_filter_lower_limit(matching::GlobalFilterLowerLimit::lookup(_indexEnv.getProperties())); set_global_filter_upper_limit(matching::GlobalFilterUpperLimit::lookup(_indexEnv.getProperties())); + _executeOnMatch._attribute = execute::onmatch::Attribute::lookup(_indexEnv.getProperties()); + _executeOnMatch._operation = execute::onmatch::Operation::lookup(_indexEnv.getProperties()); + _executeOnReRank._attribute = execute::onrerank::Attribute::lookup(_indexEnv.getProperties()); + _executeOnReRank._operation = execute::onrerank::Operation::lookup(_indexEnv.getProperties()); + _executeOnSummary._attribute = execute::onsummary::Attribute::lookup(_indexEnv.getProperties()); + _executeOnSummary._operation = execute::onsummary::Operation::lookup(_indexEnv.getProperties()); } void diff --git a/searchlib/src/vespa/searchlib/fef/ranksetup.h b/searchlib/src/vespa/searchlib/fef/ranksetup.h index 75b80f35abe..fb6d92f4bac 100644 --- a/searchlib/src/vespa/searchlib/fef/ranksetup.h +++ b/searchlib/src/vespa/searchlib/fef/ranksetup.h @@ -21,6 +21,17 @@ namespace search::fef { **/ class RankSetup { +public: + struct ExecuteOperation { + public: + ExecuteOperation() : ExecuteOperation("", "") {} + ExecuteOperation(vespalib::stringref attribute, vespalib::stringref operation) + : _attribute(attribute), + _operation(operation) + {} + vespalib::string _attribute; + vespalib::string _operation; + }; private: const BlueprintFactory &_factory; const IIndexEnvironment &_indexEnv; @@ -62,8 +73,9 @@ private: double _nearest_neighbor_brute_force_limit; double _global_filter_lower_limit; double _global_filter_upper_limit; - - + ExecuteOperation _executeOnMatch; + ExecuteOperation _executeOnReRank; + ExecuteOperation _executeOnSummary; public: RankSetup(const RankSetup &) = delete; RankSetup &operator=(const RankSetup &) = delete; @@ -419,6 +431,10 @@ public: * @param queryEnv The query environment. */ void prepareSharedState(const IQueryEnvironment & queryEnv, IObjectStore & objectStore) const; + + const ExecuteOperation & getExecuteOnMatch() const { return _executeOnMatch; } + const ExecuteOperation & getExecuteOnReRank() const { return _executeOnReRank; } + const ExecuteOperation & getExecuteOnSummary() const { return _executeOnSummary; } }; } |