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
Download

Algoritmo Soundex - Voltar ao site da TOP