summaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/features
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-04-17 09:33:53 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-06-22 12:47:00 +0000
commitb56785323aaf66f1db473db130c2126ffdd76b9b (patch)
tree5b10903d9d500e2fe37cdfd8a5e078b4928c2753 /searchlib/src/tests/features
parentf323d7eadd378266f2523cf0771aa00abbcd8b0a (diff)
Add a rank feature that will use the distribution key to provide a globally unique number.
unique = (docId << 16 | distributionKey)
Diffstat (limited to 'searchlib/src/tests/features')
-rw-r--r--searchlib/src/tests/features/prod_features.cpp22
-rw-r--r--searchlib/src/tests/features/prod_features.h1
2 files changed, 23 insertions, 0 deletions
diff --git a/searchlib/src/tests/features/prod_features.cpp b/searchlib/src/tests/features/prod_features.cpp
index 3f71c9f85ea..d28c162bacc 100644
--- a/searchlib/src/tests/features/prod_features.cpp
+++ b/searchlib/src/tests/features/prod_features.cpp
@@ -34,6 +34,7 @@
#include <vespa/searchlib/features/setup.h>
#include <vespa/searchlib/features/termfeature.h>
#include <vespa/searchlib/features/utils.h>
+#include <vespa/searchlib/features/uniquefeature.h>
#include <vespa/searchlib/features/weighted_set_parser.hpp>
#include <vespa/searchlib/fef/featurenamebuilder.h>
#include <vespa/searchlib/fef/indexproperties.h>
@@ -112,6 +113,7 @@ Test::Main()
TEST_DO(testTerm()); TEST_FLUSH();
TEST_DO(testTermDistance()); TEST_FLUSH();
TEST_DO(testUtils()); TEST_FLUSH();
+ TEST_DO(testUnique()); TEST_FLUSH();
TEST_DONE();
return 0;
@@ -1564,6 +1566,26 @@ Test::testMatchCount()
}
void
+Test::testUnique()
+{
+ {
+ UniqueBlueprint bp;
+ EXPECT_TRUE(assertCreateInstance(bp, "unique"));
+ FtFeatureTest ft(_factory, "");
+ StringList params, in, out;
+ FT_SETUP_OK(bp, ft.getIndexEnv(), params, in, out.add("out"));
+ FT_DUMP_EMPTY(_factory, "unique");
+
+ EXPECT_TRUE(assertMatches(0, "x", "a", "matches(foo)"));
+ }
+ FtFeatureTest ft(_factory, "unique");
+ ASSERT_TRUE(ft.setup());
+ EXPECT_TRUE(ft.execute(0x10003,0, 1));
+ EXPECT_TRUE(ft.execute(0x70003,0, 7));
+
+}
+
+void
Test::testMatches()
{
{ // Test blueprint.
diff --git a/searchlib/src/tests/features/prod_features.h b/searchlib/src/tests/features/prod_features.h
index 6d30dd3fcd8..7f444e8ff60 100644
--- a/searchlib/src/tests/features/prod_features.h
+++ b/searchlib/src/tests/features/prod_features.h
@@ -39,6 +39,7 @@ public:
void testRankingExpression();
void testTerm();
void testTermDistance();
+ void testUnique();
static void testUtils();
static void setupForDotProductTest(FtFeatureTest & ft);