Skip to main content

RobustPositiveEvidencePoolOperator

Struct RobustPositiveEvidencePoolOperator 

Source
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: bool

Derive 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

Source

pub fn new(signals: Vec<Arc<dyn Operator>>, alpha: f64) -> Self

Source

pub fn with_adaptive_weights(self) -> Self

Source

pub fn with_gating(self, gating: LogitGating) -> Self

Source

pub fn with_base_rate(self, base_rate: f64) -> Self

Fusion-level relevance prior, applied exactly once.

Source

pub fn with_weights(self, weights: Vec<f64>) -> Self

Source

pub fn with_logit_normalization( self, logit_min: Vec<f64>, logit_max: Vec<f64>, ) -> Self

Source

pub fn with_top_k(self, top_k: usize) -> Self

Trait Implementations§

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.