domingo, 6 de dezembro de 2009

Pesquisa Fonética em PHP

Na aplicação PHP que desenvolvi foi necessário a implementação de uma pesquisa fonética, no entando, usar a função SOUNDEX se mostrou ineficaz por vários motivos...

Foi então que encontrei um trabalho nesse link...

Nele é proposto um algoritmo para pesquisa fonética em português, acho que o nome é BUSCABR...

Para utilizar esta função criei a seguinte classe no PHP que pode ser vista aqui..

Exemplo e Explicação:
echo BuscaBR::Fonetica("José da Silva"); // Retorna: / js d slv /
echo BuscaBR::Fonetica("José da Silva",1);; // Retorna:  js d slv
O segundo argumento "1", serve para fazer com que o retorno venha delimitado por //, tive de fazer isso pois minha outra classe usava trim, e removia os espaços antes de depois...

Mas porque espaços antes e depois da string?

Porque ao pesquisar, %js%, sem espaços, ele vai match jsm (Josiane)...
Agora pesquisando por % js %, com espaços, ele vai match apenas José ou Jozé ou Josi, Giosé...
E se no MySQL estiver armazenado sem espaços, ele sempre vai ignorar a primeira e a última palavra, que apesar de terem as letras certas, faltam um espaço...

Espero de façam bom uso dela...

Link da Função: http://pastebin.com/f1819c394

PS: Percebi que a minha função que foi feita com base no guia do texto está errada, pois na tabela do texto ele inclui diversas letras que não estavam no guia, logo segue a nova versão do código aqui... Já alterei nos links acima...

Nenhum comentário: