Soundex er ikke godt for denne slags ting, fordi forskellige ord kan give dig de samme Soundex-resultater og vil derfor sortere vilkårligt. En bedre løsning til dette er Levenshein Edit Distance-algoritmen, og du kan muligvis implementere den som en funktion i din database:Link til Levensheint impl. som MySql-lagret funktion !!!
Du kan også tjekke dette SO-link . Den indeholder en SQL-server (T-SQL-specifik) implementering af algoritmen, men det burde være muligt at portere. Mekanikken i algoritmen er ret enkel og behøver kun et 2D-array og looping over streng.