Soundex no es bueno para este tipo de cosas porque diferentes palabras pueden darte los mismos resultados de Soundex y, por lo tanto, se ordenarán arbitrariamente. Una mejor solución para esto es el algoritmo Levenshein Edit Distance y puede implementarlo como una función en su base de datos:Enlace a Levensheint impl. como función almacenada MySql !!!
También puede consultar este enlace SO . Contiene una implementación del algoritmo del servidor Sql (específico de T-SQL), pero debería ser posible portar. La mecánica del algoritmo es bastante simple y solo necesita una matriz 2D y un bucle sobre una cadena.