summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--common/mailpreprocessor.cpp19
-rw-r--r--tests/querytest.cpp57
2 files changed, 57 insertions, 19 deletions
diff --git a/common/mailpreprocessor.cpp b/common/mailpreprocessor.cpp
index 58cb15b..9efa5c9 100644
--- a/common/mailpreprocessor.cpp
+++ b/common/mailpreprocessor.cpp
@@ -133,10 +133,21 @@ void MailPropertyExtractor::updatedIndexedProperties(Sink::ApplicationDomain::Ma
133 } else { 133 } else {
134 contentToIndex << processPart(msg.data()); 134 contentToIndex << processPart(msg.data());
135 } 135 }
136 contentToIndex.append({{}, msg->from(true)->asUnicodeString()}); 136 const auto sender = mail.getSender();
137 contentToIndex.append({{}, msg->to(true)->asUnicodeString()}); 137 contentToIndex.append({{}, sender.name});
138 contentToIndex.append({{}, msg->cc(true)->asUnicodeString()}); 138 contentToIndex.append({{}, sender.emailAddress});
139 contentToIndex.append({{}, msg->bcc(true)->asUnicodeString()}); 139 for (const auto &c : mail.getTo()) {
140 contentToIndex.append({{}, c.name});
141 contentToIndex.append({{}, c.emailAddress});
142 }
143 for (const auto &c : mail.getCc()) {
144 contentToIndex.append({{}, c.name});
145 contentToIndex.append({{}, c.emailAddress});
146 }
147 for (const auto &c : mail.getBcc()) {
148 contentToIndex.append({{}, c.name});
149 contentToIndex.append({{}, c.emailAddress});
150 }
140 151
141 //Prepare content for indexing; 152 //Prepare content for indexing;
142 mail.setProperty("index", QVariant::fromValue(contentToIndex)); 153 mail.setProperty("index", QVariant::fromValue(contentToIndex));
diff --git a/tests/querytest.cpp b/tests/querytest.cpp
index 81b7cdc..a36dd5e 100644
--- a/tests/querytest.cpp
+++ b/tests/querytest.cpp
@@ -1346,11 +1346,11 @@ private slots:
1346 auto msg = KMime::Message::Ptr::create(); 1346 auto msg = KMime::Message::Ptr::create();
1347 msg->subject()->from7BitString("Subject To Search"); 1347 msg->subject()->from7BitString("Subject To Search");
1348 msg->setBody("This is the searchable body."); 1348 msg->setBody("This is the searchable body.");
1349 msg->from()->from7BitString("\"The Sender\"<sender@example.org>");
1349 msg->assemble(); 1350 msg->assemble();
1350 { 1351 {
1351 Mail mail("sink.dummy.instance1"); 1352 Mail mail("sink.dummy.instance1");
1352 mail.setExtractedMessageId("test1"); 1353 mail.setExtractedMessageId("test1");
1353 mail.setExtractedSubject("Subject To Search");
1354 mail.setFolder("folder1"); 1354 mail.setFolder("folder1");
1355 mail.setMimeMessage(msg->encodedContent()); 1355 mail.setMimeMessage(msg->encodedContent());
1356 VERIFYEXEC(Sink::Store::create<Mail>(mail)); 1356 VERIFYEXEC(Sink::Store::create<Mail>(mail));
@@ -1378,52 +1378,79 @@ private slots:
1378 Sink::Query query; 1378 Sink::Query query;
1379 query.resourceFilter("sink.dummy.instance1"); 1379 query.resourceFilter("sink.dummy.instance1");
1380 query.filter<Mail::Subject>(QueryBase::Comparator(QString("Subject"), QueryBase::Comparator::Fulltext)); 1380 query.filter<Mail::Subject>(QueryBase::Comparator(QString("Subject"), QueryBase::Comparator::Fulltext));
1381 auto result = Sink::Store::read<Mail>(query); 1381 QCOMPARE(Sink::Store::read<Mail>(query).size(), 1);
1382 QCOMPARE(result.size(), 1);
1383 } 1382 }
1383 //Case-insensitive
1384 { 1384 {
1385 Sink::Query query; 1385 Sink::Query query;
1386 query.resourceFilter("sink.dummy.instance1"); 1386 query.resourceFilter("sink.dummy.instance1");
1387 query.filter<Mail::Subject>(QueryBase::Comparator(QString("Search"), QueryBase::Comparator::Fulltext)); 1387 query.filter<Mail::Subject>(QueryBase::Comparator(QString("Search"), QueryBase::Comparator::Fulltext));
1388 auto result = Sink::Store::read<Mail>(query); 1388 QCOMPARE(Sink::Store::read<Mail>(query).size(), 1);
1389 QCOMPARE(result.size(), 1);
1390 } 1389 }
1390 //Case-insensitive
1391 { 1391 {
1392 Sink::Query query; 1392 Sink::Query query;
1393 query.resourceFilter("sink.dummy.instance1"); 1393 query.resourceFilter("sink.dummy.instance1");
1394 query.filter<Mail::Subject>(QueryBase::Comparator(QString("search"), QueryBase::Comparator::Fulltext)); 1394 query.filter<Mail::Subject>(QueryBase::Comparator(QString("search"), QueryBase::Comparator::Fulltext));
1395 auto result = Sink::Store::read<Mail>(query); 1395 QCOMPARE(Sink::Store::read<Mail>(query).size(), 1);
1396 QCOMPARE(result.size(), 1);
1397 } 1396 }
1397 //Wildcard match
1398 { 1398 {
1399 Sink::Query query; 1399 Sink::Query query;
1400 query.resourceFilter("sink.dummy.instance1"); 1400 query.resourceFilter("sink.dummy.instance1");
1401 query.filter<Mail::Subject>(QueryBase::Comparator(QString("sear*"), QueryBase::Comparator::Fulltext)); 1401 query.filter<Mail::Subject>(QueryBase::Comparator(QString("sear*"), QueryBase::Comparator::Fulltext));
1402 auto result = Sink::Store::read<Mail>(query); 1402 QCOMPARE(Sink::Store::read<Mail>(query).size(), 1);
1403 QCOMPARE(result.size(), 1);
1404 } 1403 }
1404 //Filter by body
1405 { 1405 {
1406 Sink::Query query; 1406 Sink::Query query;
1407 query.resourceFilter("sink.dummy.instance1"); 1407 query.resourceFilter("sink.dummy.instance1");
1408 query.filter<Mail::MimeMessage>(QueryBase::Comparator(QString("searchable"), QueryBase::Comparator::Fulltext)); 1408 query.filter<Mail::MimeMessage>(QueryBase::Comparator(QString("searchable"), QueryBase::Comparator::Fulltext));
1409 auto result = Sink::Store::read<Mail>(query); 1409 QCOMPARE(Sink::Store::read<Mail>(query).size(), 1);
1410 QCOMPARE(result.size(), 1);
1411 } 1410 }
1411 //Filter by folder
1412 { 1412 {
1413 Sink::Query query; 1413 Sink::Query query;
1414 query.resourceFilter("sink.dummy.instance1"); 1414 query.resourceFilter("sink.dummy.instance1");
1415 query.filter<Mail::Subject>(QueryBase::Comparator(QString("Subject"), QueryBase::Comparator::Fulltext)); 1415 query.filter<Mail::Subject>(QueryBase::Comparator(QString("Subject"), QueryBase::Comparator::Fulltext));
1416 query.filter<Mail::Folder>("folder1"); 1416 query.filter<Mail::Folder>("folder1");
1417 auto result = Sink::Store::read<Mail>(query); 1417 QCOMPARE(Sink::Store::read<Mail>(query).size(), 1);
1418 QCOMPARE(result.size(), 1);
1419 } 1418 }
1419 //Filter by folder
1420 { 1420 {
1421 Sink::Query query; 1421 Sink::Query query;
1422 query.resourceFilter("sink.dummy.instance1"); 1422 query.resourceFilter("sink.dummy.instance1");
1423 query.filter<Mail::Subject>(QueryBase::Comparator(QString("Subject"), QueryBase::Comparator::Fulltext)); 1423 query.filter<Mail::Subject>(QueryBase::Comparator(QString("Subject"), QueryBase::Comparator::Fulltext));
1424 query.filter<Mail::Folder>("folder2"); 1424 query.filter<Mail::Folder>("folder2");
1425 auto result = Sink::Store::read<Mail>(query); 1425 QCOMPARE(Sink::Store::read<Mail>(query).size(), 0);
1426 QCOMPARE(result.size(), 0); 1426 }
1427 //Filter by sender
1428 {
1429 Sink::Query query;
1430 query.resourceFilter("sink.dummy.instance1");
1431 query.filter({}, Sink::QueryBase::Comparator(QString("sender"), Sink::QueryBase::Comparator::Fulltext));
1432 QCOMPARE(Sink::Store::read<Mail>(query).size(), 1);
1433 }
1434 //Filter by sender
1435 {
1436 Sink::Query query;
1437 query.resourceFilter("sink.dummy.instance1");
1438 query.filter({}, Sink::QueryBase::Comparator(QString("Sender"), Sink::QueryBase::Comparator::Fulltext));
1439 QCOMPARE(Sink::Store::read<Mail>(query).size(), 1);
1440 }
1441 //Filter by sender
1442 {
1443 Sink::Query query;
1444 query.resourceFilter("sink.dummy.instance1");
1445 query.filter({}, Sink::QueryBase::Comparator(QString("sender@example"), Sink::QueryBase::Comparator::Fulltext));
1446 QCOMPARE(Sink::Store::read<Mail>(query).size(), 1);
1447 }
1448 //Filter by sender
1449 {
1450 Sink::Query query;
1451 query.resourceFilter("sink.dummy.instance1");
1452 query.filter({}, Sink::QueryBase::Comparator(QString("The Sender"), Sink::QueryBase::Comparator::Fulltext));
1453 QCOMPARE(Sink::Store::read<Mail>(query).size(), 1);
1427 } 1454 }
1428 } 1455 }
1429 1456