Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal,
Vcs já trabalharam com pesquisa fonética?
Opa!
Pois é....a função Soundex teoricamente resolveria! No entanto ela fica devendo na busca por nomes compostos..
Pois...
Se eu buscar:
SÃO PAULO...todas as cidades iniciadas com "SÃO" ..serão exibidas para o usuário.
>
Opa!
Pois é....a função Soundex teoricamente resolveria! No entanto ela fica devendo na busca por nomes compostos..
Pois...
Se eu buscar:
SÃO PAULO...todas as cidades iniciadas com "SÃO" ..serão exibidas para o usuário.
Eu não tenho comigo agora a função que criei, mas eu cai neste mesmo problema e resolvi com a função DIFFERENCE. Na época tive que fazer uma mesclagem das duas, e pegar o resultado >=2 para me mostrar os resultados.
Vou tentar montar algo no meu ambiente do SQL2008 e vou postando.
[]´s
conseguiu?
Na verdade não, ainda não. Trabalhei neste feriado e devo tentar algo hoje.
Até o momento só fiz um esquema com o Soundex, mas uma busca basica em T-SQL.
Bom, uma pesquisa no meu pc e achei um esboço do que montei na época!
Observando e lendo a documentação do soundex, ele tem limitações e uma delas é o reconhecimento do carácter "espaço". Em palavras compostas ele não reconhece segunda parte. Sabendo desta limitação eu resolvi, no meu caso, com o replace, deste modo:
declare @busca varchar(max)
declare @texto varchar(max)
declare @texto1 varchar(max)
declare @texto2 varchar(max)
set @texto = 'sao paul'
set @texto1 = 'sao paulo'
set @texto2 = 'sao bernardo do campo'
set @busca = 'sao paul'
set @texto = replace(@texto, ' ', '')
set @texto1 = replace(@texto1, ' ', '')
set @texto2 = replace(@texto2, ' ', '')
set @busca = replace(@busca, ' ', '')
-- SOUNDEX
select SOUNDEX(@texto), SOUNDEX(@texto1), SOUNDEX (@texto2), SOUNDEX(@busca)
-- DIFFERENCE
select DIFFERENCE(@texto, @busca) , DIFFERENCE(@texto1, @busca), DIFFERENCE(@texto2, @busca)
claro que é um exemplo básico, porém funciona!
No fórum do MSDN, montaram uma função fonética para ser utilizada no lugar da soundex: http://social.msdn.microsoft.com/Forums/pt-BR/transactsqlpt/thread/03c2b5a8-8193-4ee8-8515-1823d5001f95
Não testei e não tenho ideia se funciona, pelo que postaram lá, funciona.
[]´s
sr.silva, tudo bom?
Seguinte, você pode usar a função Soundex
http://msdn.microsoft.com/pt-br/library/ms187384.aspx
Só que claro, nem tudo é perfeito. Pode-se utilizar o Soundex com Difference;
http://support.microsoft.com/kb/100365/pt
http://msdn.microsoft.com/pt-br/library/ms189282(v=SQL.100).aspx
Mas pq mesclar este duas funções: Simples! Na comparação de duas palavras, elas tem que ser foneticamente parecidas, então não pode haver distorções entre elas, então é diferente eu procurar "joão" e "jooãão". Pode ser que o Soundex não encontre este último exemplo.
Já trabalhei com as duas funções e atualmente esta rodando em um sistema de marketing no SQL2008, e isso tem 2 anos :)
Bom, qq dúvida só postar
Abçs