Semana de Sistemas de Informação Faculdade Metropolitana de BH Busca com semelhança sonora em .NET Artigo publicado na revista Fórum Access de N° 70 por Agnaldo Lopes Martins Lourival Luiz Gonzaga Sistema Banco de Dados Armazenamento e recuperação de dados 1) Buscando produtos numa loja famosa na Internet: Tipo Produto Palavras chaves Livro Monge e o Executivo: uma História sobre a Essência da Liderança Essencia da liderança 0 Livro Código Da Vinci Vince 0 CD Stevie Wonder - A Time to Love Stivie Womder 0 2) Buscando livros no site da livraria do artigo: Nenhum resultado encontrado O problema da busca exata Resultados Conceito: É um algoritmo para indexação de palavras a partir da pronúncia. •Soundex •Daitch-Mokotoff Soundex •Metaphone •Double Metaphone •New York State Identification and Intelligence System Algoritmos fonéticos 1) Pegue a primeira letra da string. 2) Remova as seguintes letras, exceto quando for a primeira letra: a, e, h, i, o, u, w, y. 3) Atribua números às letras restantes, da seguinte forma: BFPV 1 CGJKQSXZ DT L MN R 2 3 4 5 6 4) Letras duplicadas devem ser tratadas como uma só. 5) Consoantes lado a lado que tiverem o mesmo número na codificação devem ser tratadas como uma só. 6) Retorne: <letra maiuscula><digito><digito><digito> Algoritmo Soundex Testar Alguns bancos de dados possuem a função Soundex: • SQL Server • MySQL • Outros Soundex nos bancos de dados Testar 1°) Novo campo no banco de dados Conseqüências: 1) Cuidar de inserções e alterações. 2) Atenção com outros sistemas que utilizem o banco de dados. Estratégia de implementação da busca 2°) Buscar cada palavra chave em qualquer parte do novo campo M262 V201 V201 B201 B201 .501 P601 M262 P626 Códigos para o livro “Microsoft Visual Basic .NET para Programado res” Palavras digitadas pelo usuário Estratégia de implementação da busca 3°) Permitir que o usuário escolha a utilização da busca pelo algoritmo fonético Utilizar semelhaça sonora Estratégia de implementação da busca 1) Calcular o código Soundex de uma palavra qualquer. 2) Gerar uma seqüência de códigos Soundex para o conjunto de palavras chaves. 3) Completar a instrução SQL com os critérios necessários. Exemplo do item 3: SELECT * FROM Livro WHERE Preco > 100 O que o mecanismo de busca precisa fazer? Public Class clsSonora Public Function RetornaSoundex(ByVal sTexto As String) As String ... End Function Public Function SoundexFraseComposta(ByVal sTexto As String) As String ... End Function Public Function MontarCriterios (ByVal sCampoSonoro As String, ByVal sBusca As String) As String ... End Function End Class A classe clsSonora.vb Teste Resultado sTexto = objSonoro.RetornaSoundex("Metropolitana") sTexto = "M361" sTexto = objSonoro.SoundexFraseComposta ("Faculdade Metropolitana") sTexto = "F243 M361" sCriterio = objSonoro.MontarCriterios("CodigoSonoro", "Faculdade Metropolitana") sCriterio = "CodigoSonoro Like '*F243*' AND CodigoSonoro Like '*M361*'" Exemplo do teste 3: SELECT * FROM Livro WHERE CodigoSonoro Like '*F243*' AND CodigoSonoro Like '*M361*' Resultados da clsSonora Utilizar semelhaça sonora Resultados da pesquisa Utilizar semelhaça sonora Resultados da pesquisa 1) Uso de triggers em bancos de dados para manutenção automática do campo onde a busca será realizada. 2) Adaptação das instruções SQL em função do banco de dados utilizado. 3) Pode-se obter resultados interessantes modificando: • Os grupos de caracteres • O comprimento do código Soundex • Implementação de outras regras • Outro algoritmo fonético Considerações finais • http://en.wikipedia.org • http://www.macoratti.net • Books Online do SQL Server • http://www.via102.com.br • [email protected] • [email protected] Referências