Table of Contents

Constructor RankedEmailCandidate

Namespace
MailFathom.Application.Emails.Search
Assembly
MailFathom.Application.dll

RankedEmailCandidate(EmailTimelinePosition, float)

One email an ordering placed, before anything has been read about it beyond where it placed.

public RankedEmailCandidate(EmailTimelinePosition Position, float Score)

Parameters

Position EmailTimelinePosition

Where the email sits in the timeline order, which is also its stable local identity.

Score float

What the producing ordering scored this email, meaningful only within that one ordering.

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.