In case somebody hasn't read this one:
http://www.jwz.org/doc/threading.html :)
Cheers
Jan
--
On 28 Nov 2008, at 02:53, Thomas Kerpe wrote:
This is an old Problem. Most Clients set this References Header. One
way
would be (and some E-Mail-Programs do this) to group by subject,
this is of
course easy, you have to remove the Re: and Aw: etc and emit that as
key.
E-Mail threading problem is not new and there is no 100% relyable
way to do
this. Most programs set the References header, also most the In-
Reply-To
Header. I have tested this and the results are good. However you can
never
be shure. This approach is called strict_threads in the mutt
documentation,
while the subject only approach is called pseudo threads.
When using just the In-Reply-To header it will not be so easy
because you
only get the direct "parent". Without iterating over the map results
again
you don't get these (you can not do this in one iteration with map/
reduce I
think).
The Problem gets even more worse as the RFC says the Message-ID
SHOULD be
used, this is not mandatory but it is common sense to use this. Some
E-Mail-Servers add an Message-ID if it has not one.
In one case the RFC says no References header should be used: when a
message
has more than one single parent.
//Thomas
2008/11/28 Jedediah Smith <[EMAIL PROTECTED]>
This works if emails always list all of their ancestors in the
references
field. If that is indeed the case then I wasn't aware of it and it
certainly
makes my task simpler.
I am however still interested in the case where nodes of a data
structure
only link to their immediate parent, just or the sake of discussion.
Thomas Kerpe wrote:
Hoops, sorry for that html and broken Text-part:
function(doc) {
if (doc.type == "email") {
thread = [];
if (doc.header.references){
thread = doc.header.references.split(" ");
}
thread.push(doc.header['message-id']);
thread_id = thread[0];
emit([thread_id, thread,], doc.header.subject);
}
}
//Thomas