может Вам хватит такого решения ?
Я делал очень просто при работе со сфинксом.
Если исходный запрос ничего не возвращал, просто прогонял его через
функцию где тупо менял буквы на тех же кнопках и пробывал искать заново.
// попытка исправить раскладку
$RUS = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЬЫЭЮЯабвгдеёжзийклмнопрстуфхцчшщъьыэюя\"№;:?/.,";
$ENG = "F<DULT~:PBQRKVYJGHCNEA{WXIO}MS'>Zf,dult`;pbqrkvyjghcnea[wxio]ms'.z\@#$^&|/?";