Bych napsal podobne jako ondrej, ale nebyl jsem si jisty, zda to nejak neni.
Da se to resit klicovymi slovy. Udelas si tabulku, kde id radku propojis se slovem smolkovia. A pridas tam dalsi varianty toho slova a propojis na smolkovia.
Da se vyhledavat pri psani nebo zkusit odmazavat posledni pismenka a vysledkum dat nizsi prioritu.
SELECT DISTINCT * FROM (
SELECT id, 5 as priority... Šmolkovia ... UNION
SELECT id, 4 as priority... Šmolkovi ... UNION
SELECT id, 3 as priority... Šmolkov ... UNION
SELECT id, 2 as priority... Šmolko ..
) ORDER BY priority DESC, name ASC
Kratsi slovo ziskat v php treba pomoci substr. Pripadne to muzes dat do toho AGAINST jako dalsi slovo. Ale pak neas prioritu a horsi vyrazy muzou byt topovane. Pripadne by slo dat do match Šmolk% a pak bys to vytridil podle shody, cele slovo, priorita 5, kratsi slovo, priorita 1.