aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-04-23 07:05:07 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-04-23 07:05:42 +0000
commit6b07c8b29bc9fc2e22ec06b058143ae089c6bffd (patch)
treeb30ce947d2ad657b1bf972c5b2ddd7bba4b81b2b /searchlib
parent2d89d3298b442be57fe00433e1958f05f9cfa2e6 (diff)
Add testing of too short strings.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/attribute/stringattribute/stringattribute_test.cpp6
-rw-r--r--searchlib/src/vespa/searchlib/attribute/stringbase.h7
2 files changed, 13 insertions, 0 deletions
diff --git a/searchlib/src/tests/attribute/stringattribute/stringattribute_test.cpp b/searchlib/src/tests/attribute/stringattribute/stringattribute_test.cpp
index ec711b4a456..84ed72d42ca 100644
--- a/searchlib/src/tests/attribute/stringattribute/stringattribute_test.cpp
+++ b/searchlib/src/tests/attribute/stringattribute/stringattribute_test.cpp
@@ -419,6 +419,7 @@ TEST("test uncased match") {
EXPECT_FALSE(helper.isMatch("xyza"));
EXPECT_TRUE(helper.isMatch("xyz"));
EXPECT_TRUE(helper.isMatch("XyZ"));
+ EXPECT_FALSE(helper.isMatch("Xy"));
}
TEST("test uncased prefix match") {
@@ -432,6 +433,7 @@ TEST("test uncased prefix match") {
EXPECT_TRUE(helper.isMatch("xYza"));
EXPECT_TRUE(helper.isMatch("xyz"));
EXPECT_TRUE(helper.isMatch("XyZ"));
+ EXPECT_FALSE(helper.isMatch("Xy"));
}
TEST("test cased match") {
@@ -445,6 +447,7 @@ TEST("test cased match") {
EXPECT_FALSE(helper.isMatch("xyz"));
EXPECT_FALSE(helper.isMatch("Xyz"));
EXPECT_TRUE(helper.isMatch("XyZ"));
+ EXPECT_FALSE(helper.isMatch("Xy"));
}
TEST("test cased prefix match") {
@@ -459,6 +462,7 @@ TEST("test cased prefix match") {
EXPECT_FALSE(helper.isMatch("xyz"));
EXPECT_FALSE(helper.isMatch("Xyz"));
EXPECT_TRUE(helper.isMatch("XyZ"));
+ EXPECT_FALSE(helper.isMatch("Xy"));
}
TEST("test uncased regex match") {
@@ -472,6 +476,7 @@ TEST("test uncased regex match") {
EXPECT_TRUE(helper.isMatch("xyZ"));
EXPECT_TRUE(helper.isMatch("xyz"));
EXPECT_FALSE(helper.isMatch("xyaZ"));
+ EXPECT_FALSE(helper.isMatch("xy"));
}
TEST("test cased regex match") {
@@ -486,6 +491,7 @@ TEST("test cased regex match") {
EXPECT_TRUE(helper.isMatch("xYZ"));
EXPECT_FALSE(helper.isMatch("xYz"));
EXPECT_FALSE(helper.isMatch("xaYZ"));
+ EXPECT_FALSE(helper.isMatch("xY"));
}
TEST_MAIN() { TEST_RUN_ALL(); }
diff --git a/searchlib/src/vespa/searchlib/attribute/stringbase.h b/searchlib/src/vespa/searchlib/attribute/stringbase.h
index f051fb07e71..c8b68543227 100644
--- a/searchlib/src/vespa/searchlib/attribute/stringbase.h
+++ b/searchlib/src/vespa/searchlib/attribute/stringbase.h
@@ -16,6 +16,10 @@
namespace search {
+/**
+ * helper class for searchcontext when doing scanning of string fields
+ * It handles differend search settings like prefix and cased/uncased and regex.
+ */
class StringSearchHelper {
public:
StringSearchHelper(QueryTermUCS4 & qTerm, bool cased);
@@ -39,6 +43,9 @@ private:
class ReaderBase;
+/**
+ * Base class for all string attributes.
+ */
class StringAttribute : public AttributeVector
{
public: