Consecutive is false when at least 1 stop word is surrounded by words

This commit is contained in:
Samyak S Sarnayak 2022-10-20 19:02:08 +05:30
parent f1da623af3
commit af33d22f25
No known key found for this signature in database
GPG Key ID: 365873F2F0C6153B

View File

@ -478,14 +478,29 @@ fn resolve_plane_sweep_candidates(
} }
Phrase(words) => { Phrase(words) => {
let mut groups_positions = Vec::with_capacity(words.len()); let mut groups_positions = Vec::with_capacity(words.len());
for word in words.iter().filter_map(|w| w.as_ref()) { let mut consecutive = true;
let positions = match words_positions.get(word) { let mut was_last_word_a_stop_word = false;
Some(positions) => positions.iter().map(|p| (p, 0, p)).collect(), for word in words.iter() {
None => return Ok(vec![]), if let Some(word) = word {
}; let positions = match words_positions.get(word) {
groups_positions.push(positions); Some(positions) => positions.iter().map(|p| (p, 0, p)).collect(),
None => return Ok(vec![]),
};
groups_positions.push(positions);
if was_last_word_a_stop_word {
consecutive = false;
}
was_last_word_a_stop_word = false;
} else {
if !was_last_word_a_stop_word {
consecutive = false;
}
was_last_word_a_stop_word = true;
}
} }
plane_sweep(groups_positions, true)? plane_sweep(groups_positions, consecutive)?
} }
Or(_, ops) => { Or(_, ops) => {
let mut result = Vec::new(); let mut result = Vec::new();