summaryrefslogtreecommitdiffstats
path: root/streamingvisitors/src/tests/searcher/searcher_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'streamingvisitors/src/tests/searcher/searcher_test.cpp')
-rw-r--r--streamingvisitors/src/tests/searcher/searcher_test.cpp65
1 files changed, 34 insertions, 31 deletions
diff --git a/streamingvisitors/src/tests/searcher/searcher_test.cpp b/streamingvisitors/src/tests/searcher/searcher_test.cpp
index 4492dfac02b..83b84fffa11 100644
--- a/streamingvisitors/src/tests/searcher/searcher_test.cpp
+++ b/streamingvisitors/src/tests/searcher/searcher_test.cpp
@@ -21,6 +21,7 @@ using namespace document;
using search::streaming::HitList;
using search::streaming::QueryNodeResultFactory;
using search::streaming::QueryTerm;
+using search::streaming::Normalizing;
using search::streaming::QueryTermList;
using TermType = QueryTerm::Type;
using namespace vsm;
@@ -47,7 +48,7 @@ class String
private:
const std::string & _str;
public:
- String(const std::string & str) : _str(str) {}
+ explicit String(const std::string & str) : _str(str) {}
bool operator==(const String & rhs) const {
return _str == rhs._str;
}
@@ -56,14 +57,14 @@ public:
class Query
{
private:
- void setupQuery(const StringList & terms) {
- for (size_t i = 0; i < terms.size(); ++i) {
- ParsedQueryTerm pqt = parseQueryTerm(terms[i]);
+ void setupQuery(const StringList & terms, Normalizing normalizing) {
+ for (const auto & term : terms) {
+ ParsedQueryTerm pqt = parseQueryTerm(term);
ParsedTerm pt = parseTerm(pqt.second);
- qtv.push_back(std::make_unique<QueryTerm>(eqnr.create(), pt.first, pqt.first.empty() ? "index" : pqt.first, pt.second));
+ qtv.push_back(std::make_unique<QueryTerm>(eqnr.create(), pt.first, pqt.first.empty() ? "index" : pqt.first, pt.second, normalizing));
}
- for (size_t i = 0; i < qtv.size(); ++i) {
- qtl.push_back(qtv[i].get());
+ for (const auto & i : qtv) {
+ qtl.push_back(i.get());
}
}
public:
@@ -72,14 +73,16 @@ public:
QueryNodeResultFactory eqnr;
std::vector<QueryTerm::UP> qtv;
QueryTermList qtl;
- Query(const StringList & terms);
+
+ explicit Query(const StringList & terms) : Query(terms, Normalizing::LOWERCASE_AND_FOLD) {}
+ Query(const StringList & terms, Normalizing normalizing);
~Query();
static ParsedQueryTerm parseQueryTerm(const std::string & queryTerm) {
size_t i = queryTerm.find(':');
if (i != std::string::npos) {
- return ParsedQueryTerm(queryTerm.substr(0, i), queryTerm.substr(i + 1));
+ return {queryTerm.substr(0, i), queryTerm.substr(i + 1)};
}
- return ParsedQueryTerm(std::string(), queryTerm);
+ return {std::string(), queryTerm};
}
static ParsedTerm parseTerm(const std::string & term) {
if (term[0] == '*' && term[term.size() - 1] == '*') {
@@ -94,8 +97,8 @@ public:
}
};
-Query::Query(const StringList & terms) : eqnr(), qtv(), qtl() {
- setupQuery(terms);
+Query::Query(const StringList & terms, Normalizing normalizing) : eqnr(), qtv(), qtl() {
+ setupQuery(terms, normalizing);
}
Query::~Query() = default;
@@ -254,8 +257,8 @@ getFieldValue(const StringList & fv)
static ArrayDataType type(*DataType::STRING);
ArrayFieldValue afv(type);
- for (size_t i = 0; i < fv.size(); ++i) {
- afv.add(StringFieldValue(fv[i]));
+ for (const auto & v : fv) {
+ afv.add(StringFieldValue(v));
}
return afv;
}
@@ -265,8 +268,8 @@ getFieldValue(const LongList & fv)
{
static ArrayDataType type(*DataType::LONG);
ArrayFieldValue afv(type);
- for (size_t i = 0; i < fv.size(); ++i) {
- afv.add(LongFieldValue(fv[i]));
+ for (long v : fv) {
+ afv.add(LongFieldValue(v));
}
return afv;
}
@@ -276,8 +279,8 @@ getFieldValue(const FloatList & fv)
{
static ArrayDataType type(*DataType::FLOAT);
ArrayFieldValue afv(type);
- for (size_t i = 0; i < fv.size(); ++i) {
- afv.add(FloatFieldValue(fv[i]));
+ for (float v : fv) {
+ afv.add(FloatFieldValue(v));
}
return afv;
}
@@ -286,8 +289,8 @@ bool
assertMatchTermSuffix(const std::string & term, const std::string & word)
{
QueryNodeResultFactory eqnr;
- QueryTerm qa(eqnr.create(), term, "index", TermType::WORD);
- QueryTerm qb(eqnr.create(), word, "index", TermType::WORD);
+ QueryTerm qa(eqnr.create(), term, "index", TermType::WORD, Normalizing::LOWERCASE_AND_FOLD);
+ QueryTerm qb(eqnr.create(), word, "index", TermType::WORD, Normalizing::LOWERCASE_AND_FOLD);
const ucs4_t * a;
size_t alen = qa.term(a);
const ucs4_t * b;
@@ -299,8 +302,8 @@ void
assertNumeric(FieldSearcher & fs, const StringList & query, const FieldValue & fv, const BoolList & exp)
{
HitsList hl;
- for (size_t i = 0; i < exp.size(); ++i) {
- hl.push_back(exp[i] ? Hits().add(0) : Hits());
+ for (bool v : exp) {
+ hl.push_back(v ? Hits().add(0) : Hits());
}
assertSearch(fs, query, fv, hl);
}
@@ -308,7 +311,7 @@ assertNumeric(FieldSearcher & fs, const StringList & query, const FieldValue & f
std::vector<QueryTerm::UP>
performSearch(FieldSearcher & fs, const StringList & query, const FieldValue & fv)
{
- Query q(query);
+ Query q(query, fs.exact() ? Normalizing::LOWERCASE : Normalizing::LOWERCASE_AND_FOLD);
// prepare field searcher
test::MockFieldSearcherEnv env;
@@ -316,7 +319,7 @@ performSearch(FieldSearcher & fs, const StringList & query, const FieldValue & f
// setup document
SharedFieldPathMap sfim(new FieldPathMapT());
- sfim->push_back(FieldPath());
+ sfim->emplace_back();
StorageDocument doc(std::make_unique<document::Document>(), sfim, 1);
doc.setField(0, document::FieldValue::UP(fv.clone()));
@@ -369,7 +372,7 @@ assertSnippetModifier(const StringList & query, const std::string & fv, const st
void assertSnippetModifier(SnippetModifierSetup & setup, const FieldValue & fv, const std::string & exp)
{
FieldValue::UP mfv = setup.modifier.modify(fv);
- const document::LiteralFieldValueB & lfv = static_cast<const document::LiteralFieldValueB &>(*mfv.get());
+ const auto & lfv = static_cast<const document::LiteralFieldValueB &>(*mfv.get());
const std::string & actual = lfv.getValue();
EXPECT_EQUAL(actual.size(), exp.size());
EXPECT_EQUAL(actual, exp);
@@ -377,11 +380,11 @@ void assertSnippetModifier(SnippetModifierSetup & setup, const FieldValue & fv,
void assertQueryTerms(const SnippetModifierManager & man, FieldIdT fId, const StringList & terms)
{
- if (terms.size() == 0) {
- ASSERT_TRUE(man.getModifiers().getModifier(fId) == NULL);
+ if (terms.empty()) {
+ ASSERT_TRUE(man.getModifiers().getModifier(fId) == nullptr);
return;
}
- ASSERT_TRUE(man.getModifiers().getModifier(fId) != NULL);
+ ASSERT_TRUE(man.getModifiers().getModifier(fId) != nullptr);
UTF8SubstringSnippetModifier * searcher =
(static_cast<SnippetModifier *>(man.getModifiers().getModifier(fId)))->getSearcher().get();
EXPECT_EQUAL(searcher->getQueryTerms().size(), terms.size());
@@ -466,7 +469,7 @@ testStrChrFieldSearcher(StrChrFieldSearcher & fs)
TEST("verify correct term parsing") {
ASSERT_TRUE(Query::parseQueryTerm("index:term").first == "index");
ASSERT_TRUE(Query::parseQueryTerm("index:term").second == "term");
- ASSERT_TRUE(Query::parseQueryTerm("term").first == "");
+ ASSERT_TRUE(Query::parseQueryTerm("term").first.empty());
ASSERT_TRUE(Query::parseQueryTerm("term").second == "term");
ASSERT_TRUE(Query::parseTerm("*substr*").first == "substr");
ASSERT_TRUE(Query::parseTerm("*substr*").second == TermType::SUBSTRINGTERM);
@@ -822,13 +825,13 @@ TEST("snippet modifier manager") {
Query query(StringList().add("i2:foo").add("i2:*bar*"));
man.setup(query.qtl, specMap, indexMap, *env.field_paths, env.query_env);
{
- SnippetModifier * sm = static_cast<SnippetModifier *>(man.getModifiers().getModifier(0));
+ auto * sm = static_cast<SnippetModifier *>(man.getModifiers().getModifier(0));
UTF8SubstringSnippetModifier * searcher = sm->getSearcher().get();
EXPECT_EQUAL(sm->getValueBuf().getLength(), 128u);
EXPECT_EQUAL(searcher->getModifiedBuf().getLength(), 64u);
}
{
- SnippetModifier * sm = static_cast<SnippetModifier *>(man.getModifiers().getModifier(1));
+ auto * sm = static_cast<SnippetModifier *>(man.getModifiers().getModifier(1));
UTF8SubstringSnippetModifier * searcher = sm->getSearcher().get();
EXPECT_EQUAL(sm->getValueBuf().getLength(), 128u);
EXPECT_EQUAL(searcher->getModifiedBuf().getLength(), 64u);