Я делал на одном проекте так (задача стояла также, искать по тому что вводится):
- разбиваем на слова
- Каждое слово переводим из английской раскладки в русскую, и если оригинал и перевод не совпадают, ищем в базе и на русском и на аглийском.
Т.е. как то так:
Ткани оптом - (ткани) & (оптом)
Nrfyb jgnjv - (nrfyb | ткани) & (jgnjv | оптом)
Nrfyb оптом - (nrfyb | ткани) & (оптом)