use query::Weight; use core::SegmentReader; use query::Scorer; use super::BooleanScorer; use query::OccurFilter; use Result; pub struct BooleanWeight { weights: Vec>, occur_filter: OccurFilter, } impl BooleanWeight { pub fn new(weights: Vec>, occur_filter: OccurFilter) -> BooleanWeight { BooleanWeight { weights: weights, occur_filter: occur_filter, } } } impl Weight for BooleanWeight { fn scorer<'a>(&'a self, reader: &'a SegmentReader) -> Result> { let sub_scorers: Vec> = try!(self.weights .iter() .map(|weight| weight.scorer(reader)) .collect()); let boolean_scorer = BooleanScorer::new(sub_scorers, self.occur_filter); Ok(box boolean_scorer) } }