Как обнаружить опечатку в поиске товара и предложить возможные исправления?

StackOverflow https://stackoverflow.com/questions/487003

Вопрос

Учитывая очень большую базу данных названий продуктов, как бы вы обнаружили возможные опечатки в пользовательских поисковых запросах и предложили возможные исправления (примерно так, как их представляет Google)?

Например.

Пользователь вводит "fork handels" и нажимает "поиск".

Они возвращаются

"Никаких результатов.Ты имел в виду "ручки для вилок"?

Это было полезно?

Решение

Существует несколько подходов к решению этой проблемы:

  1. Ведение таблицы самые популярные орфографические ошибки в вашей базе данных.Если вам нужны некоторые распространенные орфографические ошибки: здесь)
  2. Используя алгоритм, основанный на редактировать расстояние:В теории информации и информатике расстояние редактирования между двумя строками символов - это количество операций, необходимых для преобразования одной из них в другую.Существует несколько различных алгоритмов для определения или вычисления этого показателя.Прочтите Статья в Википедии об алгоритме Левенштейна например.
  3. Если вы используете Lucene для полнотекстового поиска, вот хорошая статья в котором показано, как реализовать функцию "Ты имел в виду".
  4. Если вы рассматриваете эту функцию как простое исправление орфографии, вот несколько приятных, очень коротких реализаций на нескольких языках: Как написать Корректор орфографии

Другие советы

Вы могли бы использовать фонетический алгоритм, такие как Саундекс чтобы найти совпадения, которые звучат похоже.

В PostgreSQL есть модуль с именем нечеткое соответствие, с документами, показывающими примеры использования Soundex, Levenshtein, Metaphone и Double Metaphone.

Я уверен, что читал, что Google хранит список того, что пользователь вводит повторно, когда не получает результатов.Вы могли бы сохранить сопоставление этих значений (скажем, если повторно введенная строка начинается с той же буквы).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top