diff options
author | Tor Egge <Tor.Egge@online.no> | 2024-05-16 13:54:40 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2024-05-16 13:54:40 +0200 |
commit | 7b386dd241870c6b1317cb85df1b16cc5f386d08 (patch) | |
tree | 1c1da155749cded0dca1d0ffa5608bf6802e90e5 /searchlib/src/tests | |
parent | cced1ff316a6960a0a6d091f43b0eafd3ba2a78e (diff) |
Add second phase feature.
Diffstat (limited to 'searchlib/src/tests')
-rw-r--r-- | searchlib/src/tests/features/prod_features_test.cpp | 27 | ||||
-rw-r--r-- | searchlib/src/tests/ranksetup/ranksetup_test.cpp | 15 |
2 files changed, 42 insertions, 0 deletions
diff --git a/searchlib/src/tests/features/prod_features_test.cpp b/searchlib/src/tests/features/prod_features_test.cpp index 22105533895..fb00b4ff5e6 100644 --- a/searchlib/src/tests/features/prod_features_test.cpp +++ b/searchlib/src/tests/features/prod_features_test.cpp @@ -33,6 +33,7 @@ #include <vespa/searchlib/features/random_normal_stable_feature.h> #include <vespa/searchlib/features/randomfeature.h> #include <vespa/searchlib/features/rankingexpressionfeature.h> +#include <vespa/searchlib/features/second_phase_feature.h> #include <vespa/searchlib/features/setup.h> #include <vespa/searchlib/features/termfeature.h> #include <vespa/searchlib/features/utils.h> @@ -614,6 +615,32 @@ TEST_F(ProdFeaturesTest, test_first_phase) } } +TEST_F(ProdFeaturesTest, test_second_phase) +{ + { // Test blueprint. + SecondPhaseBlueprint pt; + + EXPECT_TRUE(assertCreateInstance(pt, "secondPhase")); + + FtIndexEnvironment ie; + ie.getProperties().add(indexproperties::rank::SecondPhase::NAME, "random"); + + StringList params, in, out; + FT_SETUP_OK(pt, ie, params, in.add("random"), out.add("score")); + FT_SETUP_FAIL(pt, params.add("foo")); + params.clear(); + + FT_DUMP_EMPTY(_factory, "secondPhase", ie); + } + + { // Test executor. + FtFeatureTest ft(_factory, "secondPhase"); + ft.getIndexEnv().getProperties().add(indexproperties::rank::SecondPhase::NAME, "value(11)"); + ASSERT_TRUE(ft.setup()); + ASSERT_TRUE(ft.execute(11.0f)); + } +} + TEST_F(ProdFeaturesTest, test_foreach) { { // Test blueprint. diff --git a/searchlib/src/tests/ranksetup/ranksetup_test.cpp b/searchlib/src/tests/ranksetup/ranksetup_test.cpp index 53224425a04..348326c3936 100644 --- a/searchlib/src/tests/ranksetup/ranksetup_test.cpp +++ b/searchlib/src/tests/ranksetup/ranksetup_test.cpp @@ -26,6 +26,7 @@ #include <vespa/searchlib/fef/test/rankresult.h> #include <vespa/searchlib/features/rankingexpressionfeature.h> +#include <vespa/searchlib/features/second_phase_feature.h> #include <vespa/searchlib/features/setup.h> #include <vespa/searchlib/features/valuefeature.h> #include <vespa/searchlib/fef/test/plugin/chain.h> @@ -787,6 +788,19 @@ RankSetupTest::testFeatureDump() exp.addScore("test_cfgvalue(foo)", 1.0); EXPECT_EQUAL(exp, dumper.dump()); } + { // Dump secondPhase feature + IndexEnvironment indexEnv; + indexEnv.getProperties().add(indexproperties::rank::FirstPhase::NAME, "value(2)"); + indexEnv.getProperties().add(indexproperties::rank::SecondPhase::NAME, "value(4)"); + RankEnvironment rankEnv(_factory, indexEnv, _queryEnv); + FeatureDumper dumper(rankEnv); + dumper.configure(); + dumper.addDumpFeature("secondPhase"); + EXPECT_TRUE(dumper.setup()); + RankResult exp; + exp.addScore("secondPhase", 4.0); + EXPECT_EQUAL(exp, dumper.dump()); + } } void @@ -939,6 +953,7 @@ RankSetupTest::RankSetupTest() : setup_fef_test_plugin(_factory); _factory.addPrototype(Blueprint::SP(new ValueBlueprint())); _factory.addPrototype(Blueprint::SP(new RankingExpressionBlueprint())); + _factory.addPrototype(std::make_shared<SecondPhaseBlueprint>()); // setup an original attribute manager with two attributes search::attribute::Config cfg(search::attribute::BasicType::INT32, |