dúvidas com consulta por fonética

4 respostas
G

galera por uma caso alguem sabe me falar se o java tem alguma coisa que faz consulta por fonética, ou se é só por banco de dados mesmo?

se for BD alguem sabe se o mysql tem isso? eu achei alguma coisa aqui, mas num funfa legal.

Li alguma coisa também que o mysql tem mas só no Inglês, alguem sabe se isso é verdade?

valew galera…

4 Respostas

C

Assunto interessante… também andei pesquisando, sem muito sucesso. Pensei na alternativa de implementar isto através de procedures e triggers. Resumindo seria necessário uma procedure que dado um valor (String) gerasse o equivalente fonético, e uma trigger para quando ocorresse a inclusão do registro ou atualização do campo esta procedure fosse acionada e o valor da chave fosse gravada num campo indíce auxiliar. Para fazer a pesquisa pelo SELECT poderia ser utilizada a mesma rotina de geração de chave para recuperar o valor do índice.
Cheguei a implementar um protótipo da rotina fonética mas não tive tempo de transformá-la em procedure e trigger.
Seria necessário um banco de dados que aceite procedures escritas em java, acho que o HSQLDB e JavaDB aceitam.

Se alguém tiver mais idéias podemos trocar experiências.

G

ixi que trampo em… em qual banco vc ia fazer isso?

C

No momento não pensei em um banco específico, mas como comentei teria que aceitar procedures em java.
O funcionamento seria semelhante a FUNCTION SOUNDEX() que alguns bancos implementam. Veja no mySQL:
http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_soundex
O problema da soundex é que funciona bem somente para o idioma inglês, são baseadas no tal algortimo do D. Knuth:
http://www.xav.com/perl/lib/Text/Soundex.html

Teriamos que fazer algo semelhante mas usando os fonemas da língua portuguesa.
O parser que começei a desenvolver tratava o som dos fonemas agrupando os som parecidos, seria mais preciso do que o algoritmo do Knuth que gera chaves de até quatro dígitos.
Por Exemplo, esta é a saída de testes da rotina com algumas palavras:

# ===========================================
#            Starting PHONETIC PARSER        
# ===========================================
CACHORRO=KAXORRO
XAROPE=XAROPE
CHAPÉU=XAPEU
PAPEL=PAPEU
FAZENDA=FAZENDA
CAROÇO=KAROÇO
CARROÇA=KARROÇA
HELOISA=ELOIZA
ELOISA=ELOIZA
HELOIZA=ELOIZA
...
C

Veja alguns resultados da função SOUNDEX no mysql:
“HELOISA”=H420
“ELOISA”=E420
“XICARA”=X600
“CHICARA”=C600
“CIGARRA”=C600
“CAÇA”=C000
“CASA”=C000
“CASSA”=C000
“KAZA”=K000

Criado 3 de fevereiro de 2010
Ultima resposta 4 de fev. de 2010
Respostas 4
Participantes 2