Я пытаюсь сделать мгновенный поиск React, который позволяет вам искать телефонные номера. Они должны отображаться в следующем формате: «(123) 456-7890», но я хочу иметь возможность поиска с помощью «(123) 456-7890» или «1234567890».
Я думал, что могу просто сохранить его в отформатированном индексе, а затем терпимость к опечаткам позаботится о неформатированных запросах. Но я не получаю результатов с запросом «1234567890». Очевидно, это связано с тем, что форматирование разбивает число на три слова, а запрос состоит из одного слова. Как ни странно, это означает, что добавление круглых скобок не дает вам больше совпадающих символов при поиске, но их отсутствие может привести к тому, что запрос вообще не будет соответствовать.
Затем я попытался просто сохранить его как неформатированный (только цифры) в индексе. На этот раз совпадение получили как форматированные, так и неформатированные запросы. Но при вводе цифра за цифрой результат исчезает, когда я добираюсь до «(123)», и появляется снова, только когда я добираюсь до «(123) 456-7». Кажется разочаровывающим и странным пользовательским опытом вводить именно то число, которое показывает результат, и оно исчезает.
Я попытался добавить perens к необязательным настройкам слов, но это, похоже, не имело никакого эффекта. Я думаю, что если бы я мог заставить Algolia игнорировать perens и тире вместо того, чтобы заменять их пробелом, все это не было бы проблемой. Есть ли способ сделать это? Может быть, лучше найти способ отфильтровать запрос до того, как он будет отправлен в Алголию? Как мне это сделать?
{ number_formatted: "(123)456-7890", number_unformatted: 1234567890 }
Я только что попробовал, и каждый раз получалось совпадение. - person Jan Petr   schedule 06.01.2017