aboutsummaryrefslogtreecommitdiffstats
path: root/vsm
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2016-09-29 12:35:56 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2016-09-29 12:35:56 +0000
commite8cde65c0c35068738fa17dccc6eb7d8a97099ec (patch)
treeb32ef64e8500e9c9e695052d2a2c265472fb8168 /vsm
parentebe26d1fd87888d032dfb242b60cb405063b278c (diff)
- Add testcase for german umlaut.
- Remove requirement that term and field must have equal length. As length depends on encoding we do not know ucs4 length until after processing.
Diffstat (limited to 'vsm')
-rw-r--r--vsm/src/tests/searcher/searcher.cpp12
-rw-r--r--vsm/src/vespa/vsm/searcher/utf8stringfieldsearcherbase.cpp2
2 files changed, 9 insertions, 5 deletions
diff --git a/vsm/src/tests/searcher/searcher.cpp b/vsm/src/tests/searcher/searcher.cpp
index dbf458a0c32..981ec94c0b3 100644
--- a/vsm/src/tests/searcher/searcher.cpp
+++ b/vsm/src/tests/searcher/searcher.cpp
@@ -545,10 +545,14 @@ SearcherTest::testUTF8ExactStringFieldSearcher()
{
UTF8ExactStringFieldSearcher fs(0);
// regular
- assertString(fs, "vespa", "vespa", Hits().add(0));
- assertString(fs, "vespa", "vespa vespa", Hits());
- assertString(fs, "vesp", "vespa", Hits());
- assertString(fs, "vesp*", "vespa", Hits().add(0));
+ TEST_DO(assertString(fs, "vespa", "vespa", Hits().add(0)));
+ TEST_DO(assertString(fs, "vespar", "vespa", Hits()));
+ TEST_DO(assertString(fs, "vespa", "vespar", Hits()));
+ TEST_DO(assertString(fs, "vespa", "vespa vespa", Hits()));
+ TEST_DO(assertString(fs, "vesp", "vespa", Hits()));
+ TEST_DO(assertString(fs, "vesp*", "vespa", Hits().add(0)));
+ TEST_DO(assertString(fs, "hutte", "hutte", Hits().add(0)));
+ TEST_DO(assertString(fs, "hütte", "hütte", Hits().add(0)));
}
void
diff --git a/vsm/src/vespa/vsm/searcher/utf8stringfieldsearcherbase.cpp b/vsm/src/vespa/vsm/searcher/utf8stringfieldsearcherbase.cpp
index 3cba7587598..73d0c4faac6 100644
--- a/vsm/src/vespa/vsm/searcher/utf8stringfieldsearcherbase.cpp
+++ b/vsm/src/vespa/vsm/searcher/utf8stringfieldsearcherbase.cpp
@@ -139,7 +139,7 @@ UTF8StringFieldSearcherBase::matchTermExact(const FieldRef & f, QueryTerm & qt)
termsize_t tsz = qt.term(term);
const cmptype_t * eterm = term+tsz;
const byte * e = n + f.size();
- if ((tsz == f.size()) || ((tsz < f.size()) && qt.isPrefix())) {
+ if (tsz <= f.size()) {
bool equal(true);
for (; equal && (n < e) && (term < eterm); term++) {
if (*term < 0x80) {