Implementando um Extension Method para IEnumerables utilizarem a expressão Soundex

Standard

Imagem 1

 

Vou demostrar neste artigo como podemos criar um Extension Method para coleções (IEnumerable) poderem utilizar um recurso muito utilizado em Transact-SQL chamado Soundex.

Para quem não conhece [ou não sabe nem o que é], a expressão Soundex retorna um código de quatro caracteres utilizado para comparar a semelhança entre duas sequências de caracteres. Ou seja, foneticamente falando, “casa” seria o mesmo que “caza”, ou até mesmo “cazza”, pois o som ao reproduzi-las seria o mesmo.

O algoritmo para a geração dos quatro caracteres para a comparação fonética é realizado utilizando algumas regras e “quase todas” letras do alfabeto. Onde básicamente, as seguintes regras são consideradas:

 

1 – Guarda-se o primeiro caracter da sequência e ignora os demais que forem iguais a (a, e, i, o, u, y, h, w);

2 – concatena-se os próximos caracteres com seu respectivo código:

  • b, f, p, v => 1
  • c, g, j, k, q, s, x, z => 2
  • d, t => 3
  • l => 4
  • m, n => 5
  • r => 6

3 – Dois caracteres adjacentes com o mesmo número são codificados como um único número, assim como, dois caracteres iguais separados por ‘h’ ou ‘w’ são codificados como um número único.

4 – Se houver letras duplicadas, a segunda letra é ignorada

5  – Continue até que o resultado seja três números, ou, preencher com “0” até ficarem três números. Continue reading