diff --git a/src/snippet/mod.rs b/src/snippet/mod.rs
index 64d661acb..8f94a0a40 100644
--- a/src/snippet/mod.rs
+++ b/src/snippet/mod.rs
@@ -127,9 +127,8 @@ fn search_fragments<'a>(
fragments.push(fragment)
};
fragment = FragmentCandidate::new(next.offset_from);
- } else {
- fragment.try_add_token(next, &terms);
}
+ fragment.try_add_token(next, &terms);
}
if fragment.score > 0.0 {
fragments.push(fragment)
@@ -183,7 +182,7 @@ mod tests {
fn test_snippet() {
let tokenizer = SimpleTokenizer;
- let t = box_tokenizer(tokenizer);
+ let boxed_tokenizer = box_tokenizer(tokenizer);
let text = "Rust is a systems programming language sponsored by Mozilla which describes it as a \"safe, concurrent, practical language\", supporting functional and imperative-procedural paradigms. Rust is syntactically similar to C++[according to whom?], but its designers intend it to provide better memory safety while still maintaining performance.
@@ -196,7 +195,7 @@ Rust won first place for \"most loved programming language\" in the Stack Overfl
terms.insert(String::from("rust"), 1.0);
terms.insert(String::from("language"), 0.9);
- let fragments = search_fragments(t, &text, terms, 100);
+ let fragments = search_fragments(boxed_tokenizer, &text, terms, 100);
assert_eq!(fragments.len(), 7);
{
let first = fragments.iter().nth(0).unwrap();
@@ -207,4 +206,30 @@ Rust won first place for \"most loved programming language\" in the Stack Overfl
assert_eq!(snippet.fragments, "Rust is a systems programming language sponsored by Mozilla which describes it as a \"safe".to_owned());
assert_eq!(snippet.to_html(), "Rust is a systems programming language sponsored by Mozilla which describes it as a "safe".to_owned())
}
+
+ #[test]
+ fn test_snippet_in_second_fragment() {
+ let tokenizer = SimpleTokenizer;
+
+ let boxed_tokenizer = box_tokenizer(tokenizer);
+
+ let text = "a b c d e f g";
+
+ let mut terms = BTreeMap::new();
+ terms.insert(String::from("c"), 1.0);
+
+ let fragments = search_fragments(boxed_tokenizer, &text, terms, 3);
+
+ assert_eq!(fragments.len(), 1);
+ {
+ let first = fragments.iter().nth(0).unwrap();
+ assert_eq!(first.score, 1.0);
+ assert_eq!(first.start_offset, 4);
+ assert_eq!(first.stop_offset, 6);
+ }
+
+ let snippet = select_best_fragment_combination(fragments, &text);
+ assert_eq!(snippet.fragments, "c d");
+ assert_eq!(snippet.to_html(), "c d");
+ }
}