dúvidas com consulta por fonética

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…

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.

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

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
...

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