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

como implementar um algoritmo de pesquisa eficaz ao usar php e um banco de dados mysql?


Algumas maneiras diferentes de fazer isso:

O mais rápido (em termos de desempenho) é:select * FROM Table where keyword LIKE '%value%' O truque neste aqui é a colocação do % que é um curinga, dizendo ou pesquise tudo que termina ou começa com esse valor.

Uma mais flexível, mas (um pouco) mais lenta, poderia ser a função REGEXP:
Select * FROM Table WHERE keyword REGEXP 'value'

Isso está usando o poder das expressões regulares, para que você possa ficar tão elaborado quanto quiser com isso. No entanto, deixar como acima lhe dá uma espécie de "Google de homem pobre", permitindo que a pesquisa seja fragmentada de campos gerais.

A parte pegajosa vem se você estiver tentando pesquisar nomes. Por exemplo, qualquer um encontraria o nome "smith" se você pesquisou SMI. No entanto, nenhum dos dois encontraria "Jon Smith" se houvesse um campo de nome e sobrenome separados. Então, você teria que fazer alguma concatenação para a busca para encontrar Jon OU Smith OU Jon Smith OU Smith, Jon. Pode realmente bola de neve de lá.

Claro, se você estiver fazendo algum tipo de pesquisa avançada, terá que condicionar sua consulta de acordo. Então, por exemplo, se você quisesse pesquisar primeiro, por último, endereço, sua consulta teria que testar cada um:
SELECT * FROM table WHERE first LIKE '%value%' OR last LIKE '%value%' OR address LIKE '%value'