Как поиск измеряет похожесть слов

Расстояние Левенштейна — минимальное число вставок, удалений и замен символов, которое превращает одну строку в другую. Метрику предложил советский математик Владимир Левенштейн в 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 главных брендов в неправильной раскладке и транслитом.
  • Проверьте ложные срабатывания на моделях и артикулах.
  • Следите за нулевой выдачей: опечатки — одна из её частых причин.