Você quis dizer… como fazer

Um dia desses o Deivison Arthur veio me falar sobre um módulo de busca com inteligência artificial pra Magento, onde um dos recursos era sugerir palavras escritas de forma incorreta.

Essa funcionalidade no entanto, é mais fácil de ser implementada do que muita gente pensa. Eu mesmo, já a implementei em um sistema de vendas de medicamentos há alguns anos.

Basicamente trata-se de um método nativo na maioria dos banco de dados chamado SOUNDEX.

Certamente há formas mais sofisticadas de se fazer isso, mas esta já costuma atender na maioria dos casos. Experimente por exemplo, executar os dois comandos SQL abaixo:

SELECT SOUNDEX('HELO');
/*retorna H400*/

SELECT SOUNDEX('HELLO');
/*retorna H400*/

Repare que os resultados são os mesmos, ou seja, são representados pelo mesmo conjunto de caracteres.

Não é difícil imaginar aplicações pra isso não é mesmo?

Sendo assim, uma forma simples de se melhorar uma busca é ter uma tabela auxiliar associando palavras corretas com seu respectivo soundex, e realizando uma pesquisa nela quando determinada pesquisa do usuário não trouxer uma quantidade de resultados satisfatórios.

O método SOUNDEX funciona melhor para palavras da língua inglesa, no entanto, já existem implementações no nosso idioma para a maioria dos sistemas gerenciadores de bancos de dados (mysql, mssql, etc).

Pronto pra criar seu próprio sistema de busca e enterrar de vez aquele tal de Google?

Compartilhe com os amigos
  • Digg
  • StumbleUpon
  • Print
  • del.icio.us
  • Facebook
  • Twitter
  • Google Bookmarks
  • email
  • Google Buzz
  • LinkedIn
  • Live
  • MSN Reporter
  • Orkut
  • PDF
  • Reddit
  • Tumblr
Publicidade

2 comentários

  1. Diego disse:

    Boa dica, só não gosto muito da implementação no SQL Server
    Essa feature é bem ruim para pt-BR, tem uns resultados bem esquisitos (principalmente caso queira usar isso em nomes). Fica ruim, porque vários nomes possuem semelhança entre si (no resultado do SOUNDEX) mas não possuem muita semelhança na forma “cru”.
    Ex:
    Daphne (Soundex D150)
    Deiviane (Soundex D150)
    Deisy (Soundex D200)
    Diego (Soundex D200)
    Dayane (Soundex D500)
    Daiana (Soundex D500)
    Dione (Soundex D500)
    No SQL Server eu prefiro usar o Full-text (que implementa funções de busca de forma muito mais elaborada e é bem simples de usar)

    • Oi Diego, obrigado pela contribuição.
      Como comentei, existem implementações do Soundex pro Pt-Br. Mas obrigado pela dica do full-text, não sabia que ela fazia essa aproximação fonética também.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *