From 793cbf80495b8230e0b4de6ac609e2ca88b7dd4b Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Mon, 23 Nov 2009 16:58:35 +0100 Subject: Add rudimentary date-based search. The rudimentary aspect here is that the date ranges are specified with UNIX timestamp values (number of seconds since 1970-01-01 UTC). One thing that can help here is using the date program to determins timestamps, such as: $(date +%s -d 2009-10-01)..$(date +%s) Long-term, we'll probably need to do our own query parsing to be able to support directly-specified dates and also relative expressions like "since:'2 months ago'". --- lib/database-private.h | 1 + lib/database.cc | 3 +++ 2 files changed, 4 insertions(+) (limited to 'lib') diff --git a/lib/database-private.h b/lib/database-private.h index 5f178f3e..431966fb 100644 --- a/lib/database-private.h +++ b/lib/database-private.h @@ -32,6 +32,7 @@ struct _notmuch_database { Xapian::Database *xapian_db; Xapian::QueryParser *query_parser; Xapian::TermGenerator *term_gen; + Xapian::ValueRangeProcessor *value_range_processor; }; #endif diff --git a/lib/database.cc b/lib/database.cc index 2c90019c..3fe12dd5 100644 --- a/lib/database.cc +++ b/lib/database.cc @@ -501,11 +501,13 @@ notmuch_database_open (const char *path, notmuch->query_parser = new Xapian::QueryParser; notmuch->term_gen = new Xapian::TermGenerator; notmuch->term_gen->set_stemmer (Xapian::Stem ("english")); + notmuch->value_range_processor = new Xapian::NumberValueRangeProcessor (NOTMUCH_VALUE_TIMESTAMP); notmuch->query_parser->set_default_op (Xapian::Query::OP_AND); notmuch->query_parser->set_database (*notmuch->xapian_db); notmuch->query_parser->set_stemmer (Xapian::Stem ("english")); notmuch->query_parser->set_stemming_strategy (Xapian::QueryParser::STEM_SOME); + notmuch->query_parser->add_valuerangeprocessor (notmuch->value_range_processor); for (i = 0; i < ARRAY_SIZE (BOOLEAN_PREFIX_EXTERNAL); i++) { prefix_t *prefix = &BOOLEAN_PREFIX_EXTERNAL[i]; @@ -548,6 +550,7 @@ notmuch_database_close (notmuch_database_t *notmuch) delete notmuch->term_gen; delete notmuch->query_parser; delete notmuch->xapian_db; + delete notmuch->value_range_processor; talloc_free (notmuch); } -- cgit v1.2.3