To może inaczej. Wymyśliłem sposób na rozwiązanie problemu, ale nie wiem czy jest wystarczająco dobry (szybki).
Powiedzmy, że w bazie danych mam słowo "słownik", którego użytkownik szuka.
wpisuje do wyszukiwarki: "slownik"
W skrypcie php odpowiednia funkcja zamienia mi "l" -> "(l|ł)", i dodaje odpowiednie znaki, jak poniżej:
^(s|ś)(l|ł)(o|ó)w(n|ń)ik$
Następnie wykonuje zapytanie REGEXP i wszyscy są zadowoleni, bo użytkownik znalazł to czego szukał

Niestety to rozwiązanie jest dużo wolniejsze od zwykłego zapytania ze znakiem przyrównania.
Ale być może jest najlepsze?
Proszę o jakieś sugestie na ten temat bardziej doświadczonych programistów, zanim zaimplementuje to rozwiązanie w swoim skrypcie.
Edit:
Dodam funkcję, którą napisałem na własne potrzeby na wypadek, gdyby pomysł komuś się spodobał:
function makeRegExpPl($str){
$old = array('e', 'o', 'a', 's', 'l', 'z', 'c', 'n', 'E', 'O', 'A', 'S', 'L', 'Z', 'C', 'N'); $new = array('(e|ę)', '(o|ó)', '(a|ą)', '(s|ś)', '(l|ł)', '(z|ż|ź)', '(c|ć)', '(n|ń)', '(E|Ę)', '(O|Ó)', '(A|Ą)', '(S|Ś)', '(L|Ł)', '(Z|Ż|Ź)', '(C|Ć)', '(N|Ń)'); }
Oczywiście mile widziane sugestie, gdyby coś dało się zoptymalizować.