Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sr.silva

Pesquisa Fonética

Recommended Posts

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

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.