pesquisa fonética

Delphi

08/09/2003

Olá a todos do forum.
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

Helson

Curtidas 0

Respostas

4_olho

4_olho

08/09/2003

Use as funções Soundex, disponíveis a partir do Delphi 6.


GOSTEI 0
Andreehrig

Andreehrig

08/09/2003

Boa tarde,
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
Scarvalh

Scarvalh

08/09/2003

Boa tarde, 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



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
Scarvalh

Scarvalh

08/09/2003

Boa tarde, 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



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
POSTAR