summaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/ranksetup
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2021-11-02 13:39:24 +0000
committerHåvard Pettersen <havardpe@oath.com>2021-11-02 13:39:24 +0000
commit0885e78faf297b939fa1c5dfa63c7b4afc308850 (patch)
tree5910bbff30780d9e5ad5f61d8b3216a5848bfd5f /searchlib/src/tests/ranksetup
parent9ce773196b34da2cfb6242cfcfa442e4071a3a46 (diff)
added match features to rank setup
Diffstat (limited to 'searchlib/src/tests/ranksetup')
-rw-r--r--searchlib/src/tests/ranksetup/ranksetup_test.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/searchlib/src/tests/ranksetup/ranksetup_test.cpp b/searchlib/src/tests/ranksetup/ranksetup_test.cpp
index 51f998d0793..ddd3f946cc5 100644
--- a/searchlib/src/tests/ranksetup/ranksetup_test.cpp
+++ b/searchlib/src/tests/ranksetup/ranksetup_test.cpp
@@ -503,6 +503,8 @@ void RankSetupTest::testRankSetup()
IndexEnvironment env;
env.getProperties().add(rank::FirstPhase::NAME, "firstphase");
env.getProperties().add(rank::SecondPhase::NAME, "secondphase");
+ env.getProperties().add(match::Feature::NAME, "match_foo");
+ env.getProperties().add(match::Feature::NAME, "match_bar");
env.getProperties().add(dump::Feature::NAME, "foo");
env.getProperties().add(dump::Feature::NAME, "bar");
env.getProperties().add(matching::NumThreadsPerSearch::NAME, "3");
@@ -532,9 +534,14 @@ void RankSetupTest::testRankSetup()
env.getProperties().add(mutate::on_summary::Operation::NAME, "-=2");
RankSetup rs(_factory, env);
+ EXPECT_FALSE(rs.has_match_features());
rs.configure();
EXPECT_EQUAL(rs.getFirstPhaseRank(), vespalib::string("firstphase"));
EXPECT_EQUAL(rs.getSecondPhaseRank(), vespalib::string("secondphase"));
+ EXPECT_TRUE(rs.has_match_features());
+ ASSERT_TRUE(rs.get_match_features().size() == 2);
+ EXPECT_EQUAL(rs.get_match_features()[0], vespalib::string("match_foo"));
+ EXPECT_EQUAL(rs.get_match_features()[1], vespalib::string("match_bar"));
ASSERT_TRUE(rs.getDumpFeatures().size() == 2);
EXPECT_EQUAL(rs.getDumpFeatures()[0], vespalib::string("foo"));
EXPECT_EQUAL(rs.getDumpFeatures()[1], vespalib::string("bar"));
@@ -804,6 +811,8 @@ RankSetupTest::testFeatureNormalization()
rankSetup.setFirstPhaseRank(" mysum ( value ( 1 ) , value ( 1 ) ) ");
rankSetup.setSecondPhaseRank(" mysum ( value ( 2 ) , value ( 2 ) ) ");
+ rankSetup.add_match_feature(" mysum ( value ( 3 ) , value ( 3 ) ) ");
+ rankSetup.add_match_feature(" mysum ( \"value( 3 )\" , \"value( 3 )\" ) ");
rankSetup.addSummaryFeature(" mysum ( value ( 5 ) , value ( 5 ) ) ");
rankSetup.addSummaryFeature(" mysum ( \"value( 5 )\" , \"value( 5 )\" ) ");
rankSetup.addDumpFeature(" mysum ( value ( 10 ) , value ( 10 ) ) ");
@@ -817,9 +826,11 @@ RankSetupTest::testFeatureNormalization()
MatchData::UP match_data = layout.createMatchData();
RankProgram::UP firstPhaseProgram = rankSetup.create_first_phase_program();
RankProgram::UP secondPhaseProgram = rankSetup.create_second_phase_program();
+ RankProgram::UP match_program = rankSetup.create_match_program();
RankProgram::UP summaryProgram = rankSetup.create_summary_program();
firstPhaseProgram->setup(*match_data, queryEnv);
secondPhaseProgram->setup(*match_data, queryEnv);
+ match_program->setup(*match_data, queryEnv);
summaryProgram->setup(*match_data, queryEnv);
EXPECT_APPROX(2.0, Utils::getScoreFeature(*firstPhaseProgram, 1), 0.001);
@@ -850,6 +861,17 @@ RankSetupTest::testFeatureNormalization()
exp["mysum(value(2),value(2)).out"] = 4.0;
TEST_DO(checkFeatures(exp, actual));
}
+ { // all match features
+ std::map<vespalib::string, feature_t> actual = Utils::getAllFeatures(*match_program, 1);
+ std::map<vespalib::string, feature_t> exp;
+ exp["value(3)"] = 3.0;
+ exp["value(3).0"] = 3.0;
+ exp["mysum(value(3),value(3))"] = 6.0;
+ exp["mysum(value(3),value(3)).out"] = 6.0;
+ exp["mysum(\"value( 3 )\",\"value( 3 )\")"] = 6.0;
+ exp["mysum(\"value( 3 )\",\"value( 3 )\").out"] = 6.0;
+ TEST_DO(checkFeatures(exp, actual));
+ }
{ // all rank features (summary)
std::map<vespalib::string, feature_t> actual = Utils::getAllFeatures(*summaryProgram, 1);
std::map<vespalib::string, feature_t> exp;