mirror of
https://github.com/meilisearch/MeiliSearch
synced 2024-11-26 14:54:27 +01:00
Merge #1813
1813: Apply highlight tags on numbers in the formatted search result output r=irevoire a=Jhnbrn90 This is my first ever Rust related PR. As described in #1758, I've attempted to highlighting numbers correctly under the `_formatted` key. Additionally, I added a test which should assert appropriate highlighting. I'm open to suggestions and improvements. Co-authored-by: John Braun <john@brn.email>
This commit is contained in:
commit
79817bd465
@ -554,6 +554,11 @@ impl<'a, A: AsRef<[u8]>> Formatter<'a, A> {
|
||||
})
|
||||
.collect(),
|
||||
),
|
||||
Value::Number(number) => {
|
||||
let number_string_value =
|
||||
self.format_string(number.to_string(), matcher, format_options);
|
||||
Value::String(number_string_value)
|
||||
}
|
||||
value => value,
|
||||
}
|
||||
}
|
||||
@ -788,6 +793,92 @@ mod test {
|
||||
assert_eq!(value["author"], "J. R. R. Tolkien");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn formatted_with_highlight_in_number() {
|
||||
let stop_words = fst::Set::default();
|
||||
let mut config = AnalyzerConfig::default();
|
||||
config.stop_words(&stop_words);
|
||||
let analyzer = Analyzer::new(config);
|
||||
let formatter = Formatter::new(&analyzer, (String::from("<em>"), String::from("</em>")));
|
||||
|
||||
let mut fields = FieldsIdsMap::new();
|
||||
let title = fields.insert("title").unwrap();
|
||||
let author = fields.insert("author").unwrap();
|
||||
let publication_year = fields.insert("publication_year").unwrap();
|
||||
|
||||
let mut buf = Vec::new();
|
||||
let mut obkv = obkv::KvWriter::new(&mut buf);
|
||||
|
||||
obkv.insert(
|
||||
title,
|
||||
Value::String("The Hobbit".into()).to_string().as_bytes(),
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
obkv.finish().unwrap();
|
||||
obkv = obkv::KvWriter::new(&mut buf);
|
||||
|
||||
obkv.insert(
|
||||
author,
|
||||
Value::String("J. R. R. Tolkien".into())
|
||||
.to_string()
|
||||
.as_bytes(),
|
||||
)
|
||||
.unwrap();
|
||||
obkv.finish().unwrap();
|
||||
|
||||
obkv = obkv::KvWriter::new(&mut buf);
|
||||
|
||||
obkv.insert(
|
||||
publication_year,
|
||||
Value::Number(1937.into()).to_string().as_bytes(),
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
obkv.finish().unwrap();
|
||||
|
||||
let obkv = obkv::KvReader::new(&buf);
|
||||
|
||||
let mut formatted_options = BTreeMap::new();
|
||||
formatted_options.insert(
|
||||
title,
|
||||
FormatOptions {
|
||||
highlight: false,
|
||||
crop: None,
|
||||
},
|
||||
);
|
||||
formatted_options.insert(
|
||||
author,
|
||||
FormatOptions {
|
||||
highlight: false,
|
||||
crop: None,
|
||||
},
|
||||
);
|
||||
formatted_options.insert(
|
||||
publication_year,
|
||||
FormatOptions {
|
||||
highlight: true,
|
||||
crop: None,
|
||||
},
|
||||
);
|
||||
|
||||
let mut matching_words = BTreeMap::new();
|
||||
matching_words.insert("1937", Some(4));
|
||||
|
||||
let value = format_fields(
|
||||
&fields,
|
||||
obkv,
|
||||
&formatter,
|
||||
&matching_words,
|
||||
&formatted_options,
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(value["title"], "The Hobbit");
|
||||
assert_eq!(value["author"], "J. R. R. Tolkien");
|
||||
assert_eq!(value["publication_year"], "<em>1937</em>");
|
||||
}
|
||||
|
||||
/// https://github.com/meilisearch/MeiliSearch/issues/1368
|
||||
#[test]
|
||||
fn formatted_with_highlight_emoji() {
|
||||
|
Loading…
Reference in New Issue
Block a user