Поиск с учётом ошибок - это некое машинное обучение. И проводить его можно 2 путями...
1) Реально "учить" машину понимать что ищут пользователь.
2) Указывать регулярными выражениями все возможные опечатки...
По первому варианту можно почитать очень много в гугле и на хабре. Но на практике у Вас не Яндекс, чтобы реализовывать столь сложные алгоритмы...
Во второму немного проще... Можно пробовать искать по тому, что ввёл пользователь. И вот если не получилось - делать регулярку, которая заменит поочерёдно каждую букву на "произвольный набор букв/цифр"... По другому я этого не вижу. Перечислять всё подряд - бред.
Дальше можно пойти путём объединения методов. Т.к. поиск регулярками - сложный, долгий и ресурсоёмкий - результаты поиска сохраняются... Т.е. мы находим на что надо исправить, чтобы найти что хочет пользователь. Но опять же - вариант затратен.
Есть альтернативные варианты - воспользоваться готовым. Т.е. либо использовать API по проверке орфографии, либо API поиска...
Поправьте меня, если это можно сделать проще...