byjg / fonemabr
O Fonema BR tem por objetivo criar uma simplificação de palavras de tal forma que erros de ortografia e vogais não interfiram na busca
Requires
- php: >=8.3 <8.6
- byjg/convert: ^6.0
Requires (Dev)
- phpunit/phpunit: ^10.5|^11.5
- vimeo/psalm: ^5.9|^6.13
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
| sidebar_key | fonemabr | |||
|---|---|---|---|---|
| sidebar_category | text-content | |||
| tags |
|
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