Nota che SOUNDS LIKE
non funziona come pensi. Non è equivalente a LIKE
in MySQL, poiché non supporta il %
carattere jolly.
Ciò significa che la tua query non troverà "John David" durante la ricerca di "John". Potrebbe essere accettabile se questo è solo il tuo ripiego, ma non è l'ideale.
Quindi ecco un suggerimento diverso (che potrebbe aver bisogno di miglioramenti); prima usa i PHP soundex()
funzione per trovare il soundex della parola chiave che stai cercando.
$soundex = soundex($word);
$soundexPrefix = substr($soundex, 0, 2); // first two characters of soundex
$sql = "SELECT lastname, firstname ".
"FROM table WHERE SOUNDEX(lastname) LIKE '$soundexPrefix%' ".
"OR SOUNDEX(firstname) LIKE '$soundexPrefix%'";
Ora avrai un elenco di nomi e cognomi che ha una vaga somiglianza nel suono (potrebbero essere molte voci e potresti voler aumentare la lunghezza del prefisso soundex che usi per la tua ricerca). Puoi quindi calcolare la distanza di Levenshtein tra il soundex di ogni parola e il termine di ricerca e ordinare in base a quello.
In secondo luogo, dovresti esaminare le query parametrizzate in MySQL, per evitare bug di SQL injection.