Drop results below an absolute score and return no results when nothing qualifies
The Score Threshold stage applies an absolute quality gate: it drops every document whose score on a chosen field fails a minimum bar. When nothing clears the bar it returns an empty result set and sets all_below_threshold — the signal your UI uses to show a “no good results” state instead of presenting weak matches.
Stage Category: REDUCE (N documents → ≤ N documents)Transformation: keeps only documents meeting min_score; the set may become empty.
score_normalize with min_max always rescales the top result to 1.0 — so a threshold on the normalized score can never reject an all-bad result set (the best match is always 1.0). Score Threshold gates on the raw or calibrated score, so “everything is below the bar” is expressible. Threshold on a calibrated score — the rerank cross-encoder score is ideal (score_field: "scores.rerank"), since it is far more absolute and comparable than a raw cosine similarity.
Gate on the rerank score; when nothing qualifies, the empty result + all_below_threshold tells your application to fall back to query_expand for adjacent suggestions instead of showing weak matches.
Calibrate min_score empirically: run representative queries (including ones that should return nothing) and pick the value that separates good from bad on the rerank score. The right cutoff is query-domain specific.