Observe que
SOUNDS LIKE
não funciona como você pensa que funciona. Não é equivalente a LIKE
no MySQL, pois não suporta o %
curinga. Isso significa que sua consulta não encontrará "John David" ao pesquisar "John". Isso pode ser aceitável se for apenas seu substituto, mas não é o ideal.
Então aqui está uma sugestão diferente (que pode precisar de melhorias); primeiro use PHPs
soundex()
função para encontrar o soundex da palavra-chave que você está procurando. $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%'";
Agora você terá uma lista de nomes e sobrenomes que tem uma vaga semelhança no som (isso pode ser muitas entradas, e você pode querer aumentar o comprimento do prefixo soundex que você usa para sua pesquisa). Você pode então calcular a distância Levenshtein entre o soundex de cada palavra e seu termo de pesquisa e classificar por isso.
Em segundo lugar, você deve observar as consultas parametrizadas no MySQL, para evitar erros de injeção de SQL.