Как поиск измеряет похожесть слов
Расстояние Левенштейна — минимальное число вставок, удалений и замен символов, которое превращает одну строку в другую. Метрику предложил советский математик Владимир Левенштейн в 1965 году в «Докладах Академии наук СССР». Годом раньше Фред Дамерау опубликовал в Communications of the ACM работу об автоматическом исправлении ошибок: в его выборке около 80% ошибочных написаний содержали ровно одну ошибку — лишнюю, пропущенную или заменённую букву либо перестановку соседних. Отсюда вариант Дамерау–Левенштейна, где перестановка — одна правка. Эти метрики лежат в основе нечёткого поиска по сайту.
| Запрос | Товар | Левенштейн | Дамерау–Левенштейн |
|---|---|---|---|
| «кросовки» | «кроссовки» | 1 | 1 |
| «смарфтон» | «смартфон» | 2 | 1 |
| «наушнеки» | «наушники» | 1 | 1 |
| «iPhone 14» | «iPhone 15» | 1 | 1 — ложное совпадение |
Пороги по длине слова
Чем короче слово, тем опаснее нечёткость. Поэтому поисковые движки задают допуск по длине:
| Длина слова | Elasticsearch, AUTO | Algolia, по умолчанию |
|---|---|---|
| 1–2 символа | точное совпадение | точное совпадение |
| 3 символа | 1 правка | точное совпадение |
| 4–5 символов | 1 правка | 1 опечатка |
| 6–7 символов | 2 правки | 1 опечатка |
| 8 и больше | 2 правки | 2 опечатки |
Раскладка, транслит и фонетика
- Неправильная раскладка. «ыфьыгтп» → samsung, «rhjccjdrb» → «кроссовки». Расстояние редактирования тут бесполезно — нужна таблица соответствия клавиш ЙЦУКЕН ↔ QWERTY.
- Транслитерация. «айфон» ↔ iphone, «найк» ↔ nike: словарь брендов и правила транслитерации в обе стороны.
- Ошибки на слух. «сопоги» вместо «сапоги», «жолтый» вместо «жёлтый». Для английского есть фонетические алгоритмы семейства Soundex и Metaphone, для русского используют правила нормализации гласных и согласных — одну из задач NLP.
Где нечёткость вредит
На артикулах, моделях и числах одна правка меняет товар: «RTX 4060» и «RTX 4070», размер 42 и 43. Что делать:
- ставить точное совпадение выше нечёткого;
- отключать нечёткость для полей артикула, модели и чисел;
- не исправлять запрос, если по нему есть точные результаты;
- писать «Показаны результаты по запросу …» и давать вернуться к исходному.
Семантика как дополнение и чек-лист
Векторный семантический поиск частично устойчив к опечаткам: модели делят слова на подсловные токены и узнают слово с небольшой ошибкой, особенно в длинном запросе. На коротких запросах и артикулах надёжнее расстояние редактирования.
- Выгрузите из журнала 50 реальных запросов с ошибками и проверьте выдачу по каждому.
- Прогоните 10 главных брендов в неправильной раскладке и транслитом.
- Проверьте ложные срабатывания на моделях и артикулах.
- Следите за нулевой выдачей: опечатки — одна из её частых причин.