index: rank threads by recency, the user's own, and their correspondents'

Search ranked threads by the fields their words were in and broke ties by date, so a vague word such as "invoice" put a conversation the user was in under pages of bills. Measured on 600 known-item queries drawn from a real Fastmail account, the right thread was in the first ten 63% of the time for conversations the user took part in. The segment now keeps each message's sender (version 2; an older file is written again on its own), and a JMAP session asks for the ids of what is in Sent: their senders are the user, whatever addresses they used. A thread's score adds what fades over a year from today's mail, a bonus when the user wrote in it, and the log of how many messages its most engaged sender wrote in the user's threads. On a second, held-out set of queries that lifts the conversations' first ten to 79% (mean reciprocal rank 0.453 to 0.621), and leaves search over all mail where it was (0.366 to 0.372). A search takes about 0.3 ms more.


Author rockorager.dev
Date Commit Parent 8f9650e7
+291 -70
4 changed files
+291 -70
4 changed files