pub fn combmnz_fuse(
result_sets: &[Vec<SearchResult>],
k: usize,
) -> Vec<SearchResult>Expand description
CombMNZ fusion.
For each distinct id, the fused score is MNZ(d) * Σ_i score_i(d), where
MNZ(d) is the number of result lists whose top-k contains the document.
Text is taken from the first list that contains the document. The result is
sorted descending by score.
This is the canonical CombMNZ combination (Fox & Shaw, 1994): a document appearing near the top of many lists is boosted multiplicatively, so broad agreement across backends outranks a single high score.
Inputs should be normalized first (e.g. via normalize_minmax) so that
score magnitudes are comparable across lists.
§Precondition
k must be at least 1. With k == 0 no document is ever in any top-k, so
every MNZ(d) is 0 and all fused scores collapse to zero; the call is
therefore treated as programmer error and panics (matching
weighted_sum_fuse’s precondition handling).