Покупатель пишет «перфаратор», «шруповерт» и «,jkufhrf». Всё это — запросы, по которым у вас есть товар, и все они заканчиваются пустой страницей, если поиск ищет точное вхождение. Разбираем, как устроено исправление опечаток и где оно вредит.
Четыре разных явления
Их часто валят в одну кучу, а обрабатываются они по-разному.
Опечатка. Пропущенная, лишняя, переставленная или неверная буква: «перфаратор», «шуруповет», «болгрка». Решается сравнением на расстояние: слово считается совпавшим, если отличается от словарного на одну-две операции.
Чужая раскладка. «,jkufhrf» — это «болгарка», набранная латиницей. Решается не поиском, а преобразованием: по таблице соответствия клавиш строка переводится в другую раскладку и ищется заново.
Транслитерация. «bolgarka» — то же слово, записанное латиницей осознанно. Решается отдельной таблицей: «sh» → «ш», «ch» → «ч» и так далее.
Словоформа. «болгарки», «болгаркой» — не ошибка вовсе, а другой падеж. Решается морфологией: приведением к начальной форме и слова из запроса, и слов из карточки.
Поиск, умеющий только первое, всё равно будет промахиваться на трёх остальных.
Сколько ошибок прощать
Терпимость должна зависеть от длины слова:
| Длина слова | Допустимо ошибок |
|---|---|
| до 4 букв | 0 |
| 5–7 букв | 1 |
| 8 и более | 2 |
Причина в том, что на коротких словах одна допущенная ошибка превращает запрос в другой запрос. «Дом» отличается от «том», «ком» и «сом» ровно на одну букву — и все они существуют. Прощая ошибку в трёхбуквенном слове, вы не исправляете опечатку, а подменяете запрос.
Слишком щедрое исправление опечаток хуже его отсутствия: покупатель видит выдачу, не имеющую отношения к запросу, и решает, что каталог у вас случайный.
Где исправление опечаток вредит
Артикулы
Здесь различие в один символ — это другой товар. «УШМ-125-1200» и «УШМ-125-1400» отличаются одной цифрой и представляют разные модели.
Правильная последовательность: сначала точный поиск по артикулу; нечёткое совпадение допускается только если точного не нашлось, и результат при этом стоит пометить как приблизительный.
Числа в характеристиках
«230» и «330» — не опечатка друг друга, а два разных диаметра. Числовые токены из нечёткого сравнения лучше исключать вовсе.
Бренды
«Makita» и «Makute» — существующие разные бренды, второй из которых часто ищут как подделку первого. Автоматическое «исправление» одного в другой создаст претензии, а не продажи.
Что показывать покупателю
Исправление должно быть видимым, а не молчаливым. Два рабочих варианта:
- «Показаны результаты по запросу „болгарка“. Искать „болгрка“» — когда система уверена в исправлении.
- «Возможно, вы имели в виду: болгарка» — когда не уверена, и выдача остаётся по исходному запросу.
Молчаливая подмена запроса выглядит как ошибка сайта: человек ввёл одно, видит другое и не понимает почему.
Как проверить свой поиск
Составьте список из двадцати запросов и прогоните вручную:
- Пять ходовых товаров с одной опечаткой в каждом.
- Три запроса в чужой раскладке.
- Три запроса латиницей-транслитом.
- Три запроса в косвенном падеже.
- Три артикула с пробелом вместо дефиса.
- Три коротких запроса из трёх-четырёх букв — проверить, что их не «исправили» в чужие товары.
Последний пункт проверяют реже всего, а именно он ловит слишком щедрую настройку.
Коротко
- Опечатка, чужая раскладка, транслит и словоформа — четыре разные задачи, решаются по-разному.
- Терпимость к ошибкам должна расти с длиной слова; на коротких словах она вредна.
- В артикулах и числах нечёткое сравнение нужно ограничивать: там один символ меняет товар.
- Исправление показывают покупателю явно, а не подменяют запрос молча.
- Проверять поиск нужно на списке из реальных ошибочных формулировок, включая короткие слова.


