From b136ca0411836d5c8f9534460f4e2bc4e79b6bd1 Mon Sep 17 00:00:00 2001 From: djcb Date: Wed, 29 May 2013 07:33:17 -0700 Subject: [PATCH] * try harder to match special strings --- lib/mu-query.cc | 8 +++----- lib/mu-store-write.cc | 5 ++++- lib/mu-str.c | 1 + 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/mu-query.cc b/lib/mu-query.cc index ca973fb2..5bdb1024 100644 --- a/lib/mu-query.cc +++ b/lib/mu-query.cc @@ -91,8 +91,6 @@ private: } else return false; } - - }; @@ -229,8 +227,8 @@ get_query (MuQuery *mqx, const char* searchexpr, GError **err) (preprocessed, Xapian::QueryParser::FLAG_BOOLEAN | Xapian::QueryParser::FLAG_PURE_NOT | - Xapian::QueryParser::FLAG_WILDCARD | Xapian::QueryParser::FLAG_AUTO_SYNONYMS | + Xapian::QueryParser::FLAG_WILDCARD | Xapian::QueryParser::FLAG_BOOLEAN_ANY_CASE ); g_free (preprocessed); @@ -269,8 +267,8 @@ add_prefix (MuMsgFieldId mfid, Xapian::QueryParser* qparser) qparser->add_prefix (shortcut, pfx); } - // all fiels are also matched implicitly, withouth - // an + // all fields are also matched implicitly, without + // any prefix qparser->add_prefix ("", pfx); } MU_XAPIAN_CATCH_BLOCK; diff --git a/lib/mu-store-write.cc b/lib/mu-store-write.cc index 500beb7e..8318a340 100644 --- a/lib/mu-store-write.cc +++ b/lib/mu-store-write.cc @@ -318,7 +318,10 @@ add_terms_values_str (Xapian::Document& doc, const char *val, MuMsgFieldId mfid) if (mu_msg_field_xapian_index (mfid)) { Xapian::TermGenerator termgen; termgen.set_document (doc); - termgen.index_text_without_positions (val, 1, prefix(mfid)); + termgen.index_text_without_positions (str, 1, prefix(mfid)); + if (g_strcmp0 (val, str) != 0) + termgen.index_text_without_positions (val, 1, prefix(mfid)); + // g_print ("%s --> '%s' (%s)\n", mu_msg_field_name (mfid), val, str); } // g_print ("%s --> '%s'\n", mu_msg_field_name (mfid), str); diff --git a/lib/mu-str.c b/lib/mu-str.c index 22169be5..1a1cd8fa 100644 --- a/lib/mu-str.c +++ b/lib/mu-str.c @@ -475,6 +475,7 @@ handle_esc_maybe (GString *gstr, char **cur, gunichar uc, case '(': case ')': case '*': + case '&': case '"': g_string_append_c (gstr, kar); return TRUE;