Fórum pesquisa fonética #180587
08/09/2003
0
Estou precisando implementar uma pesquisa fonética.
Alguém sabe de alguma técnica utilizada?
Grato.
Helson Costoliv
Analista de Sistemas
Fortaleza/Ce
8)
Helson
Curtir tópico
+ 0Posts
08/09/2003
4_olho
Gostei + 0
19/12/2003
Andreehrig
Gostaria de saber se pode me prestar alguma explicação referente a pesquisa fonética usando a funçao Soundex
Agradeço desde já
Gilmar André Ehrig
Analista/Programador
Gostei + 0
02/05/2004
Scarvalh
Gilmar,
A função Soudex() retorna o código fonético da palavra digitada, exemplo:
Soundex() para JOSE retorna F1000
Soundex() para JOSÉ retorna F1000
Soundex() para JOZE retorna F1000
Soundex() para JOZÉ retorna F1000
Sendo assim, o que voce deve fazer é criar uma tabela para consulta fonética que possua os seguintes atributos:
[b:0c68ca8e0a]Código fonético[/b:0c68ca8e0a] (chave primária) tipo varchar(10)
[b:0c68ca8e0a]Código do cadastro[/b:0c68ca8e0a] (chave primária) tipo depende do seu cadastro no meu caso é integer
[b:0c68ca8e0a]Sequencial[/b:0c68ca8e0a] (chave primária) integer
A cada novo cliente que for cadastrado no seu cadastro, voce deverá gravá-lo normalmente no seu cadastro de cliente, mas deverá separar as palavras do nome e gravá-las na sua tabela fonética,
Exemplo meramente ilustrativo:
JOSE CARLOS SILVA
F1000 = soundex(JOSE)
S2400 = soundex(CARLOS)
A3000 = soundex(SILVA)
Sua tabela fonética ficaria assim:
COD_FONETICO COD_CADAST SEQ_FONETICO
F1000 55 1
S2400 55 2
A3000 55 3
O sequencial foético é importante pois para evitar duplicação da chave primária, caso um mesmo cliente tenha dois nomes iguais em nome, exemplo:
CARLOS SILVA e SILVA.
Agora basta contruir a busca fonética, coloque um edit, aplique o soundex na palavra digitada, e selecione os registros que possuem o mesmo código fonético cadastrado na tabela de busca fonética, e apresente na tela os clientes pelo codigo de cadastro dos mesmos.
Esta pesquisa é extremamente rápida, evitem a busca com o LIKE degrada demais a performance do banco.
Espero ter ajudado. :P
Sérgio Ricardo Andrade Carvalho
Analista de Sistemas
Justiça Federal
Tribunal Regional Federal da 3a. Região
http://www.trf3.gov.br
Gostei + 0
02/05/2004
Scarvalh
Gilmar,
A função Soudex() retorna o código fonético da palavra digitada, exemplo:
Soundex() para JOSE retorna F1000
Soundex() para JOSÉ retorna F1000
Soundex() para JOZE retorna F1000
Soundex() para JOZÉ retorna F1000
Sendo assim, o que voce deve fazer é criar uma tabela para consulta fonética que possua os seguintes atributos:
[b:186852f12f]Código fonético[/b:186852f12f] (chave primária) tipo varchar(10)
[b:186852f12f]Código do cadastro[/b:186852f12f] (chave primária) tipo depende do seu cadastro no meu caso é integer
[b:186852f12f]Sequencial[/b:186852f12f] (chave primária) integer
A cada novo cliente que for cadastrado no seu cadastro, voce deverá gravá-lo normalmente no seu cadastro de cliente, mas deverá separar as palavras do nome e gravá-las na sua tabela fonética,
Exemplo meramente ilustrativo:
JOSE CARLOS SILVA
F1000 = soundex(JOSE)
S2400 = soundex(CARLOS)
A3000 = soundex(SILVA)
Sua tabela fonética ficaria assim:
COD_FONETICO COD_CADAST SEQ_FONETICO
F1000 55 1
S2400 55 2
A3000 55 3
O sequencial foético é importante pois para evitar duplicação da chave primária, caso um mesmo cliente tenha dois nomes iguais em nome, exemplo:
CARLOS SILVA e SILVA.
Agora basta contruir a busca fonética, coloque um edit, aplique o soundex na palavra digitada, e selecione os registros que possuem o mesmo código fonético cadastrado na tabela de busca fonética, e apresente na tela os clientes pelo codigo de cadastro dos mesmos.
Esta pesquisa é extremamente rápida, evitem a busca com o LIKE degrada demais a performance do banco.
Espero ter ajudado. :P
Sérgio Ricardo Andrade Carvalho
Analista de Sistemas
Justiça Federal
Tribunal Regional Federal da 3a. Região
http://www.trf3.gov.br
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)