* mu-msg-field, mu-query: refactor, make queries use boolean only for maildir,

path; this enables wildcard searching for other fields
This commit is contained in:
Dirk-Jan C. Binnema
2011-05-20 21:30:04 +03:00
parent ce7c354f74
commit 3aa034f0f2
3 changed files with 274 additions and 199 deletions

View File

@ -106,9 +106,9 @@ private:
char k = date[i];
if (std::isdigit(k))
cleanup += date[i];
else if (k != ':' && k != '-' && k != '/' && k != '.' &&
k != ',')
throw std::runtime_error ("error in date str");
// else if (k != ':' && k != '-' && k != '/' && k != '.' &&
// k != ',' && k != '_')
// throw std::runtime_error ("error in date str");
}
date = cleanup;
}
@ -239,22 +239,39 @@ add_prefix (MuMsgFieldId mfid, Xapian::QueryParser* qparser)
(1, mu_msg_field_xapian_prefix (mfid));
const std::string shortcut
(1, mu_msg_field_shortcut (mfid));
if (mfid == MU_MSG_FIELD_ID_FLAGS || mfid == MU_MSG_FIELD_ID_PRIO) {
if (mu_msg_field_uses_boolean_prefix (mfid)) {
qparser->add_boolean_prefix
(mu_msg_field_name(mfid), pfx);
qparser->add_boolean_prefix (shortcut, pfx);
} else {
qparser->add_prefix
(mu_msg_field_name(mfid), pfx);
qparser->add_prefix (shortcut, pfx);
} else if (mfid == MU_MSG_FIELD_ID_MAILDIR ||
mfid == MU_MSG_FIELD_ID_MSGID) {
qparser->add_boolean_prefix
(mu_msg_field_name(mfid), pfx);
qparser->add_boolean_prefix (shortcut, pfx);
} else {
qparser->add_boolean_prefix
(mu_msg_field_name(mfid), pfx);
qparser->add_boolean_prefix (shortcut, pfx);
qparser->add_prefix ("", pfx);
qparser->add_prefix (shortcut, pfx);
}
if (!mu_msg_field_needs_prefix(mfid))
qparser->add_prefix ("", pfx);
// if (mfid == MU_MSG_FIELD_ID_FLAGS || mfid == MU_MSG_FIELD_ID_PRIO) {
// qparser->add_prefix
// (mu_msg_field_name(mfid), pfx);
// qparser->add_prefix (shortcut, pfx);
// } else if (mfid == MU_MSG_FIELD_ID_MAILDIR ||
// mfid == MU_MSG_FIELD_ID_MSGID) {
// qparser->add_boolean_prefix
// (mu_msg_field_name(mfid), pfx);
// qparser->add_boolean_prefix (shortcut, pfx);
// } else {
// qparser->add_boolean_prefix
// (mu_msg_field_name(mfid), pfx);
// qparser->add_boolean_prefix (shortcut, pfx);
// qparser->add_prefix ("", pfx);
// }
} MU_XAPIAN_CATCH_BLOCK;
}