Pular para o conteúdo principal

Fonema BR

Busca que entende o português do Brasil: "brasília" e "brazilia" viram a mesma chave, apesar dos erros de ortografia.

Sponsor Build Status Opensource ByJG Install MCP Server GitHub source GitHub license GitHub release

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

More details

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

More details

Stemmer​

use ByJG\WordProcess\Portuguese\Stemmer;

$stemmer = new Stemmer();
echo $stemmer->stem('correndo'); // Output: corr
echo $stemmer->stem('correram'); // Output: corr

More details

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.

More details and examples

Installation​

composer require byjg/fonemabr

More details

Running Tests​

vendor/bin/phpunit

Open source ByJG