Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PHP/MySQL:destaque os resultados da consulta SOUNDS LIKE


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.