use super::boolean_weight::BooleanWeight; use query::Occur; @@ -82,6 +96,16 @@ subqueries: Vec<(Occur, Box<Query>)>, } +impl Clone for BooleanQuery { + fn clone(&self) -> Self { + self.subqueries + .iter() + .map(|(x, y)| (x.clone(), y.box_clone())) + .collect::<Vec<_>>() + .into() + } +} + impl From<Vec<(Occur, Box<Query>)>> for BooleanQuery { fn from(subqueries: Vec<(Occur, Box<Query>)>) -> BooleanQuery { BooleanQuery { subqueries } @@ -114,6 +138,10 @@ .collect(); BooleanQuery::from(occur_term_queries) } + + pub fn clauses(&self) -> &[(Occur, Box<Query>)] { + &self.subqueries[..] + } }