Small fixes
This commit is contained in:
parent
54fbcb1ea6
commit
083f8a982e
24 changed files with 1505 additions and 79 deletions
|
|
@ -161,7 +161,7 @@ pub fn normalize_search_text(text: &str) -> String {
|
|||
let mut last_was_space = true;
|
||||
|
||||
for ch in text.chars() {
|
||||
if ch == '\'' || ch == '’' || ch == '`' {
|
||||
if super::is_apostrophe(ch) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
@ -769,6 +769,26 @@ impl PlaceData {
|
|||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn normalize_search_text_elides_every_apostrophe_variant() {
|
||||
// Whatever glyph the keyboard / autocorrect / paste produced for the apostrophe, the
|
||||
// normalized form must be identical — otherwise "King's Cross" tokenizes as `king s cross`
|
||||
// and matching breaks. See is_apostrophe for the full set.
|
||||
let expected = "kings cross";
|
||||
for q in [
|
||||
"King's Cross", // U+0027 straight
|
||||
"King’s Cross", // U+2019 right single quote
|
||||
"King‘s Cross", // U+2018 left single quote
|
||||
"King´s Cross", // U+00B4 acute accent
|
||||
"Kingʼs Cross", // U+02BC modifier letter apostrophe
|
||||
"King′s Cross", // U+2032 prime
|
||||
"King`s Cross", // U+0060 grave accent
|
||||
"Kingʻs Cross", // U+02BB modifier letter turned comma
|
||||
] {
|
||||
assert_eq!(normalize_search_text(q), expected, "failed for {q:?}");
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn place_index_tokens_dedup_and_min_length() {
|
||||
// "a" is too short; aliases split on " | ".
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue