use core::codec::Codec;
use core::index::merge::MergeState;
use core::store::directory::Directory;
pub struct MatchingReaders {
pub matching_readers: Vec<bool>,
pub count: usize,
}
impl MatchingReaders {
pub fn new<D: Directory, C: Codec>(merge_state: &MergeState<D, C>) -> Self {
let num_readers = merge_state.max_docs.len();
let mut matched_count = 0;
let mut matching_readers = vec![false; num_readers];
'next_reader: for i in 0..num_readers {
for fi in merge_state.fields_infos[i].by_number.values() {
let other = merge_state
.merge_field_infos
.as_ref()
.unwrap()
.field_info_by_number(fi.number);
if other.map_or(true, |o| o.name != fi.name) {
continue 'next_reader;
}
}
matching_readers[i] = true;
matched_count += 1;
}
MatchingReaders {
matching_readers,
count: matched_count,
}
}
}