Автоматическая корректировка строки, набраной в неверной раскладке

Добрый вечер:
Есть следующая задача:
Определять что текст в форме поиска на сайте набран в неверной раскладке и автоматически переводить его в верную. Клиента устроит любое решение - или заменять прямо в форме поиска "на лету" или выдавать результаты по правильному варианту, например как yandex.ru/yandsearch?lr=213&text=ytdthyfz+hfcrkflrf
Сайт работает на shared-хостинге, установить Sphinx или Яндекс-сервер нельзя.
Использовать поиск яндекса/гугла прямо на сайте тоже нельзя, заказчика не устраивает такое решение.
Тупая замена одних символов на другие не подойдет, т.к. корректные слова на английском не должны заменяться.
Нашла библиотеку для этой цели, code.google.com/p/php-lang-correct, но на словах из тованой базы этого интернет-магазина работает не совсем верно(режим KEYBOARD_LAYOUT).
Например "vfif b vtldtlm" трансформируется в "vfif b медведь", а надо "маша и медведь". Так же не работает запрос "игрушка" и еще куча разных, по которым могут искать товары.
Есть еще варианты решения, кроме как "сделать запрос, если нет результатов, перевести в другую раскладку и повторить"?
  • Вопрос задан
  • 13136 просмотров
Решения вопроса 1
iiil
@iiil
Инженер и вэб-дизайнер, рисую.
Попробуйте убедить клиента вот в чем: магазин - это не поисковик вроде google. Зачем городить такие тяжелые решения ради сомнительного удобства клиента, будет много проблем с поддержкой, на случае с иностранными словами и аббревиатурами в названиях товаров. На мой взгляд лучше сделать так: при пустом результате запроса предлагать искать по переведенному на другую раскладку результату. Если пользователь соглашается - выводить подсказку использования программ вроде Punto Switcher. В конце-концов, вопрос ведь удобстве, это не косяк на сайте, а просто желание сделать удобнее. Ведь если человек увидит надпись: по Вашему запросу Vtldtlm ничего не найдено, попробовать найти по Медведь? - он и так и так оценит старания помочь.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
opium
@opium
Просто люблю качественно работать
Решение очень легкое, пишется в десяток строк в коде
ищем по введеному слову, если находим ничего, ищем по слову в обратной раскладе, если находим то выводим результаты и слово в другой раскладке, если не находим то выводим оригинальное слово и что ничего не найдено.
Ответ написан
Комментировать
@IgoNsk
backend web developer
Я делал на одном проекте так (задача стояла также, искать по тому что вводится):
- разбиваем на слова
- Каждое слово переводим из английской раскладки в русскую, и если оригинал и перевод не совпадают, ищем в базе и на русском и на аглийском.

Т.е. как то так:
Ткани оптом - (ткани) & (оптом)
Nrfyb jgnjv - (nrfyb | ткани) & (jgnjv | оптом)
Nrfyb оптом - (nrfyb | ткани) & (оптом)
Ответ написан
Комментировать
deadbyelpy
@deadbyelpy
веб-шмеб
когда-то воспользовался рецептом из этого поста
все дело в определении популярные лемм русского языка в англ раскладке.

"Использовать поиск яндекса/гугла прямо на сайте тоже нельзя, заказчика не устраивает такое решение."
а зачем прямо на сайте? curl'om его :) и ответ парсить
Ответ написан
Комментировать
Anonym
@Anonym
Программирую немного )
Может клиента устроит решение только для него? Punto Switcher какой-нибудь?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы