From f451fa938f023ecb36972fe9f15944b49e142de4 Mon Sep 17 00:00:00 2001 From: Pascal Seitz Date: Wed, 17 Jun 2026 12:16:58 +0200 Subject: [PATCH] explain why naive scorer must accumulate scores in WAND order --- src/query/boolean_query/block_wand_intersection.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/query/boolean_query/block_wand_intersection.rs b/src/query/boolean_query/block_wand_intersection.rs index d2695df6a..861e27333 100644 --- a/src/query/boolean_query/block_wand_intersection.rs +++ b/src/query/boolean_query/block_wand_intersection.rs @@ -273,6 +273,10 @@ mod tests { } if all_match { + // Accumulate in the same left-to-right order as the WAND implementation + // (leader first, then each secondary in turn). Float addition is not + // associative, so `leader + secondaries.sum()` gives a different bit + // pattern and can cause spurious nearly_equals failures. let mut score: Score = leader.score(); for secondary in secondaries.iter_mut() { score += secondary.score();