mu/lib
djcb b75f9f508b lib: implement new query parser
mu's query parser is the piece of software that turns your queries
into something the Xapian database can understand. So, if you query
"maildir:/inbox and subject:bla" this must be translated into a
Xapian::Query object which will retrieve the sought after messages.

Since mu's beginning, almost a decade ago, this parser was based on
Xapian's default Xapian::QueryParser. It works okay, but wasn't really
designed for the mu use-case, and had a bit of trouble with anything
that's not A..Z (think: spaces, special characters, unicode etc.).

Over the years, mu added quite a bit of pre-processing trickery to
deal with that. Still, there were corner cases and bugs that were
practically unfixable.

The solution to all of this is to have a custom query processor that
replaces Xapian's, and write it from the ground up to deal with the
special characters etc. I wrote one, as part of my "future, post-1.0
mu" reseach project, and I have now backported it to the mu 0.9.19.

From a technical perspective, this is a major cleanup, and allows us
to get rid of much of the fragile preprocessing both for indexing and
querying. From and end-user perspective this (hopefully) means that
many of the little parsing issues are gone, and it opens the way for
some new features.

From an end-user perspective:
- better support for special characters.
- regexp search! yes, you can now search for regular expressions, e.g.
      subject:/h.ll?o/
  will find subjects with hallo, hello, halo,  philosophy, ...

  As you can imagine, this can be a _heavy_ operation on the database,
  and might take quite a bit longer than a normal query; but it can be
  quite useful.
2017-10-24 22:55:35 +03:00
..
parser lib: implement new query parser 2017-10-24 22:55:35 +03:00
tests Simplify logic of mu_str_remove_ctrl_in_place. Add tests. 2017-06-24 13:26:10 +02:00
Makefile.am mu: fix some compiler warnings 2016-12-28 16:32:39 +02:00
doxyfile.in * lib: doxygen support (WIP, just starting...) 2012-10-27 14:42:21 +03:00
mu-bookmarks.c * update copyright years 2013-03-30 11:32:07 +02:00
mu-bookmarks.h * update copyright years 2013-03-30 11:32:07 +02:00
mu-contacts.c mu: fix some compiler warnings 2016-12-11 18:33:31 +02:00
mu-contacts.h cfind: uniquify nicks 2016-12-27 16:21:10 +02:00
mu-container.c mu: Make mu_container_splice_grandchildren() do only one thing 2014-08-15 10:11:21 +02:00
mu-container.h mu: Make mu_container_splice_grandchildren() do only one thing 2014-08-15 10:11:21 +02:00
mu-date.c date-parsing: don't lowercase date range strings 2015-03-22 10:24:14 +02:00
mu-date.h * update copyright years 2013-03-30 11:32:07 +02:00
mu-flags.c * mu: unbreak unit test after flag changes (fixes #247) 2013-07-07 10:46:35 +03:00
mu-flags.h minor whitespace fixes 2015-09-22 09:09:39 +01:00
mu-index.c mu: add '--lazy-check' option for indexing 2016-07-23 21:33:10 +03:00
mu-index.h mu: add '--lazy-check' option for indexing 2016-07-23 21:33:10 +03:00
mu-log.c mu: cosmetic 2016-07-23 19:14:13 +03:00
mu-log.h * update copyright years 2013-03-30 11:32:07 +02:00
mu-maildir.c mu: fix some compiler warnings 2017-06-24 12:20:16 +02:00
mu-maildir.h mu: add '--lazy-check' option for indexing 2016-07-23 21:33:10 +03:00
mu-msg-crypto.c mu: include signers in signature report 2017-08-27 17:32:23 +03:00
mu-msg-doc.cc * update copyright years 2013-03-30 11:32:07 +02:00
mu-msg-doc.h * update copyright years 2013-03-30 11:32:07 +02:00
mu-msg-fields.c mu: cosmetics 2017-07-02 10:46:08 +03:00
mu-msg-fields.h minor whitespace fixes 2015-09-22 09:09:39 +01:00
mu-msg-file.c mu: mark some more inline parts as attachments 2016-11-24 22:51:23 +02:00
mu-msg-file.h * update copyright years 2013-03-30 11:32:07 +02:00
mu-msg-iter.cc Fix call to c_str() that sometimes dumps core on OpenBSD i386-current 2015-07-02 15:14:29 -05:00
mu-msg-iter.h Fix a core dump under OpenBSD 2015-03-06 00:12:34 +02:00
mu-msg-part.c mu: fix some compiler warnings 2016-12-11 18:33:31 +02:00
mu-msg-part.h mu: include signers in signature report 2017-08-27 17:32:23 +03:00
mu-msg-prio.c * update copyright years 2013-03-30 11:32:07 +02:00
mu-msg-prio.h * update copyright years 2013-03-30 11:32:07 +02:00
mu-msg-priv.h Fix #280 2015-02-16 01:19:32 +02:00
mu-msg-sexp.c mu: include signers in signature report 2017-08-27 17:32:23 +03:00
mu-msg.c mu: fix some compiler warnings 2017-06-24 12:20:16 +02:00
mu-msg.h Respect format=flowed and delsp=yes for viewing plain-text messages 2017-01-31 11:28:55 +00:00
mu-query.cc mu: fix some compiler warnings 2016-12-11 18:33:31 +02:00
mu-query.h * update copyright years 2013-03-30 11:32:07 +02:00
mu-runtime.c Fix some compiler warnings 2016-02-14 12:13:11 +02:00
mu-runtime.h * update copyright years 2013-03-30 11:32:07 +02:00
mu-script.c mu: fix some compiler warnings 2016-12-28 16:32:39 +02:00
mu-script.h * update copyright years 2013-03-30 11:32:07 +02:00
mu-store-priv.hh lib: fix a few compiler warnings 2017-01-03 00:37:19 +02:00
mu-store-read.cc mu: optimize indexing (get_uid_term) 2015-11-17 10:55:56 +02:00
mu-store-write.cc mu: fix some compiler warnings 2016-12-28 16:32:39 +02:00
mu-store.cc lib: fix a few compiler warnings 2017-01-03 00:37:19 +02:00
mu-store.h mu: write contacts-cache a bit sooner 2016-02-21 19:48:21 +02:00
mu-str.c Simplify logic of mu_str_remove_ctrl_in_place. Add tests. 2017-06-24 13:26:10 +02:00
mu-str.h cosmetic 2017-08-27 17:33:21 +03:00
mu-threader.c cosmetic 2015-10-07 10:34:55 +03:00
mu-threader.h * update copyright years 2013-03-30 11:32:07 +02:00
mu-util.c Add support for specifying --muhome via MU_HOME in the environment 2017-02-17 11:28:45 +01:00
mu-util.h Add support for specifying --muhome via MU_HOME in the environment 2017-02-17 11:28:45 +01:00