summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-10-12 20:03:15 +0200
committerGitHub <noreply@github.com>2021-10-12 20:03:15 +0200
commit35155da6c455db4247197560033103e102c04a00 (patch)
treeba3e98e6230355d80090f596a04a914ca013a1d1
parent11f0bdac69a0b252ccb67b129cc74337e0725acd (diff)
parent488788225bc14663e183d6246dfa5a0338770b55 (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.cpp14
-rw-r--r--searchlib/src/tests/ranksetup/ranksetup_test.cpp13
-rw-r--r--searchlib/src/vespa/searchlib/fef/ranksetup.cpp11
-rw-r--r--searchlib/src/vespa/searchlib/fef/ranksetup.h20
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; }
};
}