pub struct RobustPositiveEvidencePoolOperator {
pub signals: Vec<Arc<dyn Operator>>,
pub alpha: f64,
pub gating: LogitGating,
pub base_rate: Option<f64>,
pub weights: Option<Vec<f64>>,
pub adaptive_weights: bool,
pub logit_min: Option<Vec<f64>>,
pub logit_max: Option<Vec<f64>>,
pub top_k: Option<usize>,
}Expand description
Robust positive-evidence pooling for retrieval ranking.
Each signal must produce prior-free evidence probabilities in [0, 1]; a
configured base_rate enters the pool exactly once. This is a ranking
heuristic, not the conditional-independence Bayesian sum implemented by
BayesianEvidenceFusionOperator.
Missing documents contribute zero gated logit, and a signal with no
matches at all stays in the declared signal set as neutral evidence
(Lucene PR 16410 semantics: the clause count that governs n^alpha
and the uniform denominator never shrinks at execution time). The
default softplus gating floors match evidence at the prior;
LogitGating::Pass matches Lucene’s signed default.
Fields§
§signals: Vec<Arc<dyn Operator>>§alpha: f64§gating: LogitGating§base_rate: Option<f64>§weights: Option<Vec<f64>>§adaptive_weights: boolDerive per-signal weights from each signal’s gated-evidence
spread over its matches (Theorem 8.3 reliability weighting,
estimated unsupervised). Ignored when explicit weights are
set.
logit_min: Option<Vec<f64>>§logit_max: Option<Vec<f64>>§top_k: Option<usize>Implementations§
Source§impl RobustPositiveEvidencePoolOperator
impl RobustPositiveEvidencePoolOperator
pub fn new(signals: Vec<Arc<dyn Operator>>, alpha: f64) -> Self
pub fn with_adaptive_weights(self) -> Self
pub fn with_gating(self, gating: LogitGating) -> Self
Sourcepub fn with_base_rate(self, base_rate: f64) -> Self
pub fn with_base_rate(self, base_rate: f64) -> Self
Fusion-level relevance prior, applied exactly once.