Re: [PATCH v3 6/9] lib: add date range query support
On Thu, Sep 13 2012, Michal Nazarewicz wrote: On Wed, Sep 12 2012, Jani Nikula wrote: Add a custom value range processor to enable date and time searches of the form date:since..until, where since and until are expressions understood by the previously added date/time parser, to restrict the results to messages within a particular time range (based on the Date: header). If since or until describes date/time at an accuracy of days or less, the values are rounded according to the accuracy, towards past for since and towards future for until. For example, date:november..yesterday would match from the beginning of November until the end of yesterday. Expressions such as date:today..today means since the beginning of today until the end of today. IMO this is totally unintuitive and not how the range should work. date:foo..bar should return messages whose date = foo and bar. So for instance date:november..yesterday should return messages whose date is 2012/11/01 00:00:00 and 2012/09/12 00:00:00. So to get yesterdays messages one would do: date:yesterday..today. For me, date:monday..wednesday means all messages received on monday, tuseday or wednesday. If I say Wednesday, I'm really interested in Wednesday and not the day before Wednesday. I'd also like to allow syntax like date:yesterday with the meaning all messages sent yesterday. My idea how to implement this was described in id:87bovryqp0@steelpick.2x.cz. Unfortunately, I have no time to implement it myself. -Michal ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH v3 6/9] lib: add date range query support
Michal Nazarewicz min...@mina86.com writes: IMO this is totally unintuitive and not how the range should work. date:foo..bar should return messages whose date = foo and bar. So for instance date:november..yesterday should return messages whose date is 2012/11/01 00:00:00 and 2012/09/12 00:00:00. So to get yesterdays messages one would do: date:yesterday..today. On Thu, Sep 13 2012, David Bremner wrote: I don't find ranges being half-open by default to be very intuitive. Perhaps I don't program in python enough. Perhaps C than: “for (i = 0; i 10; ++i)” is the standard idiom and the end range is open. Let's take a look at: date:2012/01/01..2012/01/01 + 1 day in my opinion, that should give results from the first of January only, since “+ 1 day” indicates in a way how long user want the period to be. I think it's also easier to pragmatically create ranges. For instance, let's say you want to create ranges for each week, you'd end up with: date:2012/01/02..2012/01/09 ## 2012w01 date:2012/01/09..2012/01/16 ## 2012w02 date:2012/01/16..2012/01/23 ## 2012w03 Notice how the opening date of a range matches the closing date of the previous date. -- Best regards, _ _ .o. | Liege of Serenely Enlightened Majesty of o' \,=./ `o ..o | Computer Science, Michał “mina86” Nazarewicz(o o) ooo +email/xmpp: m...@google.com--ooO--(_)--Ooo-- pgpT8vbANXDEM.pgp Description: PGP signature ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH v3 6/9] lib: add date range query support
On Thu, Sep 13 2012, Jani Nikula wrote: I find since rounding towards past and until rounding towards future a very simple rule. But YMMV. To implement rounding, each date needs to have a period of time to align to. I call that a duration. But if you have such a duration than I propose a solution where you don't need any kind of rounding. If “yesterday” has a duration of one day, than “date:yesterday” would be equivalent to “date:yesterday..yesterday + 1 day” and this works perfectly well with ranges open on the right side. So to implement date specifications with a single date, no additional code is really required. -- Best regards, _ _ .o. | Liege of Serenely Enlightened Majesty of o' \,=./ `o ..o | Computer Science, Michał “mina86” Nazarewicz(o o) ooo +email/xmpp: m...@google.com--ooO--(_)--Ooo-- pgpZJqNBZKt06.pgp Description: PGP signature ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH v3 6/9] lib: add date range query support
On Wed, Sep 12 2012, Jani Nikula wrote: Add a custom value range processor to enable date and time searches of the form date:since..until, where since and until are expressions understood by the previously added date/time parser, to restrict the results to messages within a particular time range (based on the Date: header). If since or until describes date/time at an accuracy of days or less, the values are rounded according to the accuracy, towards past for since and towards future for until. For example, date:november..yesterday would match from the beginning of November until the end of yesterday. Expressions such as date:today..today means since the beginning of today until the end of today. IMO this is totally unintuitive and not how the range should work. date:foo..bar should return messages whose date = foo and bar. So for instance date:november..yesterday should return messages whose date is 2012/11/01 00:00:00 and 2012/09/12 00:00:00. So to get yesterdays messages one would do: date:yesterday..today. Open-ended ranges are supported (since Xapian 1.2.1), i.e. you can specify date:..until or date:since.. to not limit the start or end date, respectively. CAVEATS: Xapian does not support spaces in range expressions. You can replace the spaces with '_', or (in most cases) '-', or (in some cases) leave the spaces out altogether. -- Best regards, _ _ .o. | Liege of Serenely Enlightened Majesty of o' \,=./ `o ..o | Computer Science, Michał “mina86” Nazarewicz(o o) ooo +email/xmpp: m...@google.com--ooO--(_)--Ooo-- pgpDvsWRcl4Af.pgp Description: PGP signature ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH v3 6/9] lib: add date range query support
On Thu, Sep 13 2012, Michal Nazarewicz min...@mina86.com wrote: On Wed, Sep 12 2012, Jani Nikula wrote: Add a custom value range processor to enable date and time searches of the form date:since..until, where since and until are expressions understood by the previously added date/time parser, to restrict the results to messages within a particular time range (based on the Date: header). If since or until describes date/time at an accuracy of days or less, the values are rounded according to the accuracy, towards past for since and towards future for until. For example, date:november..yesterday would match from the beginning of November until the end of yesterday. Expressions such as date:today..today means since the beginning of today until the end of today. IMO this is totally unintuitive and not how the range should work. date:foo..bar should return messages whose date = foo and bar. So for instance date:november..yesterday should return messages whose date is 2012/11/01 00:00:00 and 2012/09/12 00:00:00. So to get yesterdays messages one would do: date:yesterday..today. I find yesterday..yesterday to return whole yesterday's messages more intuitive than that returning zero messages and requiring yesterday..today to see messages sent yesterday. However, I've noticed that range described as -1day..-1day (if that syntax is/were supported) that would be a bit confusing (In yesterday's case I think the length of 'yesterday' is 24h, but in '-1day' the lenght is one second (or something)) Anyway, this just emphasizes that this is confusing matter; we need a good idiom to comprehend this issue... Tomi Open-ended ranges are supported (since Xapian 1.2.1), i.e. you can specify date:..until or date:since.. to not limit the start or end date, respectively. CAVEATS: Xapian does not support spaces in range expressions. You can replace the spaces with '_', or (in most cases) '-', or (in some cases) leave the spaces out altogether. -- Best regards, _ _ .o. | Liege of Serenely Enlightened Majesty of o' \,=./ `o ..o | Computer Science, Michał “mina86” Nazarewicz(o o) ooo +email/xmpp: m...@google.com--ooO--(_)--Ooo--___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH v3 6/9] lib: add date range query support
Michal Nazarewicz min...@mina86.com writes: IMO this is totally unintuitive and not how the range should work. date:foo..bar should return messages whose date = foo and bar. So for instance date:november..yesterday should return messages whose date is 2012/11/01 00:00:00 and 2012/09/12 00:00:00. So to get yesterdays messages one would do: date:yesterday..today. I don't find ranges being half-open by default to be very intuitive. Perhaps I don't program in python enough. d ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
Re: [PATCH v3 6/9] lib: add date range query support
On Thu, 13 Sep 2012, Tomi Ollila tomi.oll...@iki.fi wrote: On Thu, Sep 13 2012, Michal Nazarewicz min...@mina86.com wrote: On Wed, Sep 12 2012, Jani Nikula wrote: Add a custom value range processor to enable date and time searches of the form date:since..until, where since and until are expressions understood by the previously added date/time parser, to restrict the results to messages within a particular time range (based on the Date: header). If since or until describes date/time at an accuracy of days or less, the values are rounded according to the accuracy, towards past for since and towards future for until. For example, date:november..yesterday would match from the beginning of November until the end of yesterday. Expressions such as date:today..today means since the beginning of today until the end of today. IMO this is totally unintuitive and not how the range should work. date:foo..bar should return messages whose date = foo and bar. So for instance date:november..yesterday should return messages whose date is 2012/11/01 00:00:00 and 2012/09/12 00:00:00. So to get yesterdays messages one would do: date:yesterday..today. I find yesterday..yesterday to return whole yesterday's messages more intuitive than that returning zero messages and requiring yesterday..today to see messages sent yesterday. However, I've noticed that range described as -1day..-1day (if that syntax is/were supported) that would be a bit confusing (In yesterday's case I think the length of 'yesterday' is 24h, but in '-1day' the lenght is one second (or something)) yesterday equals 1 day, so you can use date:yesterday..yesterday and date:1d..1d interchangeably. Anyway, this just emphasizes that this is confusing matter; we need a good idiom to comprehend this issue... I find since rounding towards past and until rounding towards future a very simple rule. But YMMV. One technical aspect is preparing for handling date:expr *without* range, for example date:yesterday, in the future (this is currently not supported by xapian). Intuitively that should mean all messages received yesterday. Because the date parser does not see the range (or lack of it) at all (and this is very much by design), the glue layer in notmuch lib between the parser and xapian should handle it gracefully, with no understanding of expr itself. The obvious and simple way to handle that is to just duplicate expr on both sides of the range, and date:yesterday would equal date:yesterday..yesterday, in a way that is very simple to implement and explain to users. BR, Jani. ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch