Implementar pesquisa inteligente / comparação de cadeias difusas

Eu tenho uma página da Web em um aplicativo ASP.NET MVC onde os clientes pesquisam fornecedores. Os fornecedores capturam seus próprios detalhes no site. O cliente deseja um recurso de "pesquisa inteligente", onde possa procurar fornecedores e encontrá-los, mesmo que a ortografia do fornecedor seja "ligeiramente diferente" do que é digitado na caixa de pesquisa.

Não tenho idéia do que seja a noção de "ligeiramente diferente" do cliente. Eu estive olhando para implementar um algoritmo soundex personalizado. Isso converte uma palavra em um número com base em como ela soa. Esse número é então usado para comparação.

Por exemplo:

Zach

Zack

codificará para o mesmo valor. Existem outras opções que eu poderia procurar?

questionAnswers(2)

yourAnswerToTheQuestion