Ключ в вашей идее "85% похоже". Вот несколько идей:
Таблица похожих слов
Вы можете определить таблицу, в которой вы перечисляете типичные орфографические ошибки для ваших ключевых слов. Затем вам нужно будет улучшить способ поиска в базе данных, чтобы сопоставить распространенные орфографические ошибки с правильным значением.
Поиск похожих слов
Когда вы выполняете поиск, используйте библиотеку для создания похожих слов и поиска по всем из них. Вы можете использовать любую библиотеку правописания для генерации возможных совпадений слов перед отправкой поиска. Или напишите свой собственный, основываясь на алгоритме Edit Distance .
Проверять только при необходимости:
Поскольку вы используете PHP, вы можете рассмотреть pspell. Сначала вы можете позвонить pspell_check
, чтобы узнать, правильно ли написано слово. Затем позвоните pspell_suggest
, чтобы получить предложения.
См. Ссылку для примера.
Использовать функцию базы данных
MySQL, например, имеет оператор SOUNDS_LIKE
. Вы можете искать WHERE keyword SOUNDS_LIKE 'kat'
и (предположительно) получить cat
. Более подробная информация находится на странице документации , которая предупреждает вас о некоторых ограничениях (например, только на английском языке и UTF-8).
Звучит как довольно распространенная проблема, поэтому, возможно, есть и другие, более канонические решения этой проблемы. Возможно, есть что-то конкретное для языка, который вы используете (или на уровне интерфейса базы данных), которое может абстрагироваться для вас.
Первые два должны позволить вам встретить некоторое представление о сходстве 85%. Я понятия не имею, насколько хорошо будет работать третий вариант, но это «soundz kool».