summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-10-12 13:14:55 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-10-12 13:14:55 +0000
commit488788225bc14663e183d6246dfa5a0338770b55 (patch)
tree69eb1ac72b0e16ef0f8a40acddf2af5623a7451d /searchlib
parent9512873b312a5348e29662c1bcd0e07a385c44e1 (diff)
Consider the execute instructions comming in the rankprofiles config too.
Diffstat (limited to 'searchlib')
-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
3 files changed, 41 insertions, 3 deletions
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; }
};
}