Short of full header indexing, wouldn't a better way to achieve this be to store only the "to" header as "XTO", the "cc" header "XCC", and the "bcc" header as "XBCC" and use Xapian's multi-prefix support to map the "to:" query prefix to "XTO", "XCC", and "XBCC"? That way you're not storing twice as many copies of every address. On Wed, Dec 1, 2010 at 3:33 PM, Joel Borggrén-Franck < joel.borggren.franck@gmail.com> wrote: > From: Joel Borggrén-Franck > > Add headers cc: bcc: and to: to index. Real header to: is searched as > "exactto:foo@bar.baz" and search term "to:" is kept as a union of cc:, > bcc: and to: for backward compatibility. Use search term "cc:" resp. > "bcc:" to search those headers respectively. > --- > lib/database.cc | 11 +++++++---- > lib/index.cc | 9 +++++++++ > 2 files changed, 16 insertions(+), 4 deletions(-) > > diff --git a/lib/database.cc b/lib/database.cc > index 7a00917..68910f3 100644 > --- a/lib/database.cc > +++ b/lib/database.cc > @@ -88,9 +88,9 @@ typedef struct { > * MESSAGE_ID: The unique ID of the mail mess (see "id" above) > * > * In addition, terms from the content of the message are added with > - * "from", "to", "attachment", and "subject" prefixes for use by the > - * user in searching. But the database doesn't really care itself > - * about any of these. > + * "from", "to", "exactto", "cc", "bbc", "attachment" and "subject" > + * prefixes for use by the user in searching. But the database doesn't > + * really care itself about any of these. > * > * The data portion of a mail document is empty. > * > @@ -204,7 +204,10 @@ static prefix_t PROBABILISTIC_PREFIX[]= { > { "from", "XFROM" }, > { "to", "XTO" }, > { "attachment", "XATTACHMENT" }, > - { "subject", "XSUBJECT"} > + { "subject", "XSUBJECT"}, > + { "exactto", "XEXACTTO"}, > + { "cc", "XCC"}, > + { "bcc", "XBCC"}, > }; > > int > diff --git a/lib/index.cc b/lib/index.cc > index 00478f8..d59c255 100644 > --- a/lib/index.cc > +++ b/lib/index.cc > @@ -455,6 +455,15 @@ _notmuch_message_index_file (notmuch_message_t > *message, > > _index_address_list (message, "from", addresses); > > + addresses = g_mime_message_get_recipients (mime_message, > GMIME_RECIPIENT_TYPE_TO); > + _index_address_list (message, "exactto", addresses); > + > + addresses = g_mime_message_get_recipients (mime_message, > GMIME_RECIPIENT_TYPE_CC); > + _index_address_list (message, "cc", addresses); > + > + addresses = g_mime_message_get_recipients (mime_message, > GMIME_RECIPIENT_TYPE_BCC); > + _index_address_list (message, "bcc", addresses); > + > addresses = g_mime_message_get_all_recipients (mime_message); > _index_address_list (message, "to", addresses); > > -- > 1.7.3.2 > > _______________________________________________ > notmuch mailing list > notmuch@notmuchmail.org > http://notmuchmail.org/mailman/listinfo/notmuch >