Class RankedEmailCandidate
- Namespace
- MailFathom.Application.Emails.Search
- Assembly
- MailFathom.Application.dll
One email an ordering placed, before anything has been read about it beyond where it placed.
public sealed record RankedEmailCandidate : IEquatable<RankedEmailCandidate>
- Inheritance
-
RankedEmailCandidate
- Implements
- Inherited Members
Remarks
A candidate is what a ranking produces and what fusion consumes. It deliberately carries no summary and no snippet: combining two orderings needs the identity and the place, and reading a message's projection for a candidate that the fusion then drops would be a body cut and a row projected for a result nobody receives.
The identity travels inside Position rather than beside it, because the position already holds the stable local identifier — it is the tie-breaker that makes the timeline order total. Carrying it twice would allow two answers to the same question.
Score belongs to the ordering that produced it and to nothing else. A lexical ranking scores higher for a better match, a vector search scores lower for a nearer one, and a fusion scores in units of neither; the only property every producer shares is that the sequence it returns is already in its own best-first order. Nothing compares a score across two orderings, which is exactly the calibration Reciprocal Rank Fusion exists to avoid.
Constructors
- RankedEmailCandidate(EmailTimelinePosition, float)
One email an ordering placed, before anything has been read about it beyond where it placed.
Properties
- Position
Where the email sits in the timeline order, which is also its stable local identity.
- Score
What the producing ordering scored this email, meaningful only within that one ordering.
- StoredEmailId
Gets the stable local identity of the candidate email.