É verdade, mas o que parecia ser simples agora esta ficando complicado.

Usar a fonetica nas buscas me fez tentar muitas possibilidades, porém, ainda não consegui fechar em alguma coisa concreta que retorne somente resultados relevantes.

Olha o sql que estou usando para que se o usuário digitar josé ou josé pinho retorne josé pinho em ambas pesquisas.

DECLARE
       Ppes_nome ALIAS FOR $1;
       saida     umtipoqualquer;

BEGIN
     FOR saida IN EXECUTE
         'SELECT pes_id, LOWER(pes_nome)
         FROM pessoa
         WHERE LOWER(fc_fonetica(pes_nome))
               LIKE ''%'||LOWER(fc_fonetica(''||Ppes_nome||''))||'%'' '
    LOOP

     RETURN NEXT saida;

     END LOOP;
     RETURN;
END;

O problema é que se por exemplo, pesquiso por rogério, retornará: rogerio, rogério e gregorio. ( RGR e GRGR) por causa do like.

Todo esse trabalho para que a busca encontre alguem com o nome Maria ines fonsseca duarte.
Usando como parametro pra busca:
Maria
Maria fonsseca
Ines duarte
Maria Duarte
Maria ines
Ines fonsseca.
etc...

Alguem tem alguma idéia de como fazer isso usando a função de fonetica?


On 11/1/06, joao cosme de oliveira junior < [EMAIL PROTECTED]> wrote:
so um detalhe
o fonema ss e diferente de x
talvez X por CH mas acho q ja ta comtemplado isso na funcao

Em Quarta 01 Novembro 2006 14:56, Jorge Vilela escreveu:
> Obrigado João, vou pegar então a sua versão atualizada, em cima dela estou
> pensando em criar uma função decideprimeironomeoutudo() que poderia
> procurar por espaços em branco no nome a ser pesquisado, se encontrar,
> então joga na fc_fonetica(), senão, joga na fc_foneticaprimeironome();
> Acho que vai dar certo.
>
> Coutinho, o problema ocorre quando o usúario digita somente o primeiro nome
> da pessoa, se eu usar somente fc_fonetica('josé') não retornará resultados
> que contenham qualquer coisa além de josé, por exemplo: josé silva, josé
> carlos etc.
> E se eu uso o fc_foneticaprimeironome('josé pinho') por exemplo, ele
> retorna josé pinho, josé silva e josé carlos também, algo desnecessário já
> que o usuário sabe o nome e um sobrenome da pessoa pesquisada.
>
>
> Também vou acrescentar mais algumas possibilidades que não encontrei na
> fc_fonetica e mando na lista pra todo mundo ( por exemplo ss e x,
> "alessandra/alexandra" )
>
> On 10/31/06, Nabucodonosor Coutinho <[EMAIL PROTECTED] > wrote:
> > tah na lista sim
> >
> > outra coisa jorge, vc nao precisa usara funcao primeiro nome
> > voce pode fazer sua busa normalmente como fazia antes, apenas usando a
> > funcao fc_fonetica para formatar os dados a serem comparados
> >
> > ex:
> >
> > select * from clientes
> > where fc_fonetica(nome) = fc_fonetica('josé')
> > and fc_fonetica(sobrenome) = fc_fonetica('gavião')
> >
> > Em 31/10/06, joao cosme de oliveira junior< [EMAIL PROTECTED]>
> >
> > escreveu:
> > > strpos(string,string)
> > >
> > > caro jorge,
> > > nao sei se vc viu mas fiz uma pequena modificacao na na funcao dele!
> > > pq se vc rodar ela em um registro q for null da pau!
> > > acho q ta ai na lista eu postei
> > >
> > > Em Terça 31 Outubro 2006 18:00, Jorge Vilela escreveu:
> > > > Ola pessoal, em cima da função de fonética que o Fabrizio enviou,
> >
> > estou
> >
> > > > fazendo uma busca por pessoa.
> > > > O problema é que se eu uso fc_foneticaprimeironome() ela faz a busca
> > > > somente em cima do primeiro nome, e se o usuário digitar nome e
> >
> > sobrenome,
> >
> > > > mesmo assim aparecem todos os registros que o nome seja igual ou
> >
> > parecido
> >
> > > > com o pesquisado.
> > > > O que pensei em fazer é:
> > > > Criar uma condição no banco para que ele busque pelo primeiro nome
> >
> > somente
> >
> > > > se o nome pesquisado não contiver espaços.
> > > >
> > > > Sendo assim preciso saber se em plpgsql existe algum método que diga
> >
> > se
> >
> > > > existe um determinado caracter em uma série de caracteres.
> > > >
> > > >
> > > >
> > > > Obrigado.
> > > > Jorge Vilela
> > >
> > > _______________________________________________
> > > Grupo de Usuários do PostgreSQL no Brasil
> > > Antes de perguntar consulte o manual
> > > http://pgdocptbr.sourceforge.net/
> > >
> > > Para editar suas opções ou sair da lista acesse a página da lista em:
> > > http://pgfoundry.org/mailman/listinfo/brasil-usuarios
> >
> > --
> > Nabucodonosor Coutinho
> > Database Administrator
> > Accu Hosting - www.accuhosting.com
> > _______________________________________________
> > Grupo de Usuários do PostgreSQL no Brasil
> > Antes de perguntar consulte o manual
> > http://pgdocptbr.sourceforge.net/
> >
> > Para editar suas opções ou sair da lista acesse a página da lista em:
> > http://pgfoundry.org/mailman/listinfo/brasil-usuarios
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a