Bloco de Função SOUNDEX

O bloco de função SOUNDEX calcula a similaridade fonética de uma string.

Os valores Soundex têm a propriedade de que palavras pronunciadas de forma semelhante geram o mesmo valor Soundex. Isso pode ser usado para pesquisar em bancos de dados quando você conhece a pronúncia, mas não a grafia exata. A função Soundex retorna uma string com quatro caracteres, começando com uma letra.

Entrada STR

A entrada define a string a ser calculada.

Saída

Retorna uma string com o código Soundex.

Regras Básicas

Todo código Soundex consiste em uma letra seguida por três dígitos, por exemplo, A532 para Antcas. Se a palavra a ser codificada tiver tantos caracteres que mais dígitos pudessem ser gerados, a codificação é interrompida após o terceiro dígito. Se a palavra tiver poucos caracteres, os últimos dígitos são preenchidos com zeros. O nome asiático Lee, portanto, é codificado como L000.

Dígito Letras Representadas
1 B, F, P, V
2 C, G, J, K, Q, S, X, Z
3 D, T
4 L
5 M, N
6 R

As vogais A, E, I, O e U e as consoantes H, W e Y devem ser ignoradas, exceto no primeiro caractere. Além disso, para a língua alemã, pode-se definir: os ditongos Ä, Ö e Ü devem ser ignorados, o "S" afiado ß é codificado como o simples S.

Se várias letras consecutivas na string original tiverem o mesmo código Soundex, esse código aparece apenas uma vez no resultado; de abfx, por exemplo, torna-se A120 (a permanece porque é a primeira letra, b e f resultam no mesmo código 1, x resulta em 2, um zero é anexado no final para obter quatro caracteres).

Na aplicação prática do método Soundex, dois pontos são principalmente criticados: por um lado, ele está muito orientado para a língua inglesa, por outro lado, oferece apenas uma análise muito grosseira.

No entanto, deve-se observar que o algoritmo apresentado é provavelmente o mais frequentemente aplicado para pesquisa fonética. Isso foi certamente contribuído pelo fato de que um comando PL/SQL padrão correspondente já havia sido implementado muito cedo para o banco de dados Oracle.