Artigo Clube Delphi 82 - Código fonético no Firebird

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (1)  (0)

Artigo da Revista Clube Delphi Edição 82.

Esse artigo faz parte da revista Clube Delphi Edição 82. Clique aqui para ler todos os artigos desta edição

. imagem_pdf.jpg

Firebird

Código fonético no Firebird

 

Um dos maiores problemas em um cadastro, seja de clientes, fornecedores ou produtos, é quando ele se torna muito grande, dificultando a busca por nome ou descrição. Quem nunca se confundiu com o nome de um cliente ou de um produto? Walter ou Valter? Luis ou Luiz? Tem acento? Elizabeth, Elisabette ou Elizabette?

Alguns bancos de dados como o SQL Server e o MySql disponibilizam funções para busca fonética, geralmente chamada Soundex, que gera um código fonético de acordo com a pronúncia do idioma inglês, o que a torna impraticável para a língua portuguesa. Até no Clipper tínhamos essa função.

Neste artigo veremos como criar uma rotina de código fonético em português para ser utilizada no Firebird.

 

Código fonético

Os algoritmos Soundex e Metaphone são os dois mais utilizados para gerar código fonético. O código Soundex tem a propriedade que palavras pronunciadas similarmente produzem a mesma chave soundex e assim podem ser usadas em pesquisas em bancos de dados aonde você conhece a pronúncia, mas não exatamente como escreve.

A função retorna uma string de quatro caracteres, começando com uma letra, para cada palavra. Assim, por exemplo, para o nome “Pedro da Silva” o código retornado seria algo como P360D000S410. Já para “Pedro Silva” o retorno seria algo como P360S410.

Já o algoritmo Metaphone cria a mesma chave para palavras sonoras similares. Ele é mais preciso do que Soundex porque trabalha com as regras básicas da pronunciação. As chaves Metaphone geradas são de comprimentos variado. O que faremos é adaptar o algoritmo Metaphone para a língua portuguesa.

As regras da nossa função são (quando usarmos o sinal de igualdade significa “tem o som de”):

·         Todos os acentos são substituídos, inclusive a cedilha;

  • As vogais (“A”, “E”, “I”, “O”, e “U”), o “Y” e o “H” são ignorados;
  • “E”, “DA”, “DAS” “DE”, “DI”, “DO” e “DOS” também são ignorados. Ex.: João da Silva = João Silva; Maria do Carmo = Maria Carmo; José Costa e Silva = José Costa Silva;
  • Se houver letras duplicadas, a segunda letra é ignorada. Ex: Elizabette = Elizabete;
  • As consoantes “B”, “D”, “F”, “J”, “K”, “L”, “M”, “N”, “R”, “T”, “V” e “X” são mantidas;
  • A letra “C”:
    • Seguida de “H” tem o som de “X”. Ex.: Chavier = Xavier;
    • Seguida de “A”, “O” ou “U” tem som de “K”. Ex.: Carol = Karol;
    • Seguida de “E” ou “I” tem som de “S”. Ex.: Celina = Selina;
    • Senão é ignorado. Ex: Victor = Vitor;
  • A letra “G” seguida de “E” tem som de “J”, senão é mantida. Ex.: Geraldo = Jeraldo;
  • A letra “P” seguida de “H” tem som de “F”, senão é mantida. Ex: Phelipe = Felipe;
  • A letra “Q” seguida de “U” tem som de “K”, senão é mantida. Ex: Queila = Keila;
  • A letra “S”:
    • Seguida de “H” tem o som de “X”. Ex.: Sheila = Xeila;
    • Entre duas vogais tem o som de “Z”. Ex: Casagrande = Cazagrande;
    • Seguido de vogal, é mantido;"

      A exibição deste artigo foi interrompida :(
      Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?