summaryrefslogtreecommitdiff
path: root/database.cc
diff options
context:
space:
mode:
authorCarl Worth <cworth@cworth.org>2009-10-24 22:23:58 -0700
committerCarl Worth <cworth@cworth.org>2009-10-24 22:23:58 -0700
commitaa46a683a85af0d0234720bd93ae3d09bc360910 (patch)
tree38d946e5743ea61faa4ff2fdfdd1d2c29f32fd37 /database.cc
parent17f9c6a0ef7fb303c4b60422667ad063d91234bc (diff)
Add the magic to allow searches such as "tag:inbox".
The key for this is call add_boolean_prefix on the QueryParser object. That tells the query parser to take something like "tag:inbox" and transform it into the "Linbox" term and do what it needs to do to make this term a requirement of the search. We're starting to have a real system here. Also, I didn't want to expose the ugly name of "msgid" to the user, so we add a prefix name of simply "id" instead.
Diffstat (limited to 'database.cc')
-rw-r--r--database.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/database.cc b/database.cc
index 3d96727..1666aff 100644
--- a/database.cc
+++ b/database.cc
@@ -45,6 +45,7 @@ prefix_t BOOLEAN_PREFIX[] = {
{ "type", "K" },
{ "tag", "L" },
{ "msgid", "Q" },
+ { "id", "Q" },
{ "thread", "H" },
{ "ref", "R" },
{ "timestamp", "KTS" },
@@ -493,6 +494,9 @@ notmuch_database_open (const char *path)
notmuch->query_parser = new Xapian::QueryParser;
notmuch->query_parser->set_default_op (Xapian::Query::OP_AND);
notmuch->query_parser->set_database (*notmuch->xapian_db);
+ notmuch->query_parser->add_boolean_prefix ("id", _find_prefix ("id"));
+ notmuch->query_parser->add_boolean_prefix ("tag", _find_prefix ("tag"));
+ notmuch->query_parser->add_boolean_prefix ("type", _find_prefix ("type"));
} catch (const Xapian::Error &error) {
fprintf (stderr, "A Xapian exception occurred: %s\n",
error.get_msg().c_str());