Fonema BR
Busca que entende o português do Brasil: "brasília" e "brazilia" viram a mesma chave, apesar dos erros de ortografia.
Observação: Apesar do nome "Fonema" a classe não é uma representação fiel dos fonemas brasileiros sendo apenas uma simplificação.
Nem todas as situações foram testadas. Caso encontre alguma divergência, por favor, sinta-se à vontade para fazer um pull request
Por quê
O soundex() e o metaphone() do PHP foram feitos para o inglês. No português, "brasília",
"brazilia" e "brasil" deveriam ser encontrados juntos, e não são: cada erro de ortografia ou
de acento vira uma busca sem resultado.
O Fonema BR aplica as regras do português brasileiro. Grave a chave junto com o texto e busque pela chave:
(new Metaphone())->convert('brasília'); // BRAZILIA
(new Metaphone())->convert('brazilia'); // BRAZILIA
Soundex::process('brasil'); // B625
Também inclui um stemmer, para buscar "correndo" e "corrida" pela mesma raiz.
Exemplos
Metafone
$metaphone = new \ByJG\WordProcess\Portuguese\Metaphone();
echo $metaphone->convert('brasília'); // Output: BRAZILIA
echo $metaphone->convert('brazilia'); // Output: BRAZILIA
Soundex
use ByJG\WordProcess\Portuguese\Soundex;
echo Soundex::process('brasília'); // Output: B625
echo Soundex::process('brazilia'); // Output: B625
echo Soundex::process('brasil'); // Output: B625
Stemmer
use ByJG\WordProcess\Portuguese\Stemmer;
$stemmer = new Stemmer();
echo $stemmer->stem('correndo'); // Output: corr
echo $stemmer->stem('correram'); // Output: corr
Use Cases
Uma possível utilização é criar um segundo campo no banco de dados no qual o fonema será armazenado. Sempre que salvar a palavra original você também salva a palavra com fonema.
Dessa forma você poderá pesquisar tanto a palavra original quanto a palavra simplifica com o Fonema.
Installation
composer require byjg/fonemabr
Running Tests
vendor/bin/phpunit