Muito obrigado Osvaldo! Era isso mesmo...

Segui as instruções e acabei chegando em um SQL assim:

banco=# select descricao from tag where to_tsvector(array_to_string(show_tr
gm(descricao), ' ')) @@ to_tsquery('monit');
 descricao
-----------
(0 registros)


Existem alguns registros contendo a palavra monitor, porém, se eu procurar
por parte da palavra 'monit' não encontra, verifiquei:

banco=# select array_to_string(show_trgm('monitor'), ' ');
         array_to_string
---------------------------------
   m  mo ito mon nit oni or  tor
(1 registro)


Ele não encontrou pois show_trgm não retorna monit... aí o @@ não consegue
fazer o math

Sendo assim fica impossível utilizar tsvector @@ tsquery em uma busca caso o
usuário pesquise por apenas meias palavras?

Isso aconteceria com várias palavras =(


Alguém tem alguma solução para FULL-TEXT SEARCH em duas ou mais tabelas,
onde o usuário possa digitar o que for?


Muito obrigado pessoal!
Jorge Vilela =]




2009/5/22 Osvaldo Kussama <osvaldo.kuss...@gmail.com>

> 2009/5/22 Jorge Vilela <jorge.com...@gmail.com>:
> > Obrigado Luciano =]
> > O show_trgm retorna text[] e to_tsvector e to_tsquery recebem text.
> > Alguém sabe como converter? Eu tentei algo do tipo: Select [...] WHERE
> > to_tsvector(show_trgm(campo)::text)  [...] ... Mas o banco não consegue
> > converter =(
> >
> > Jorge
> > 2009/5/22 Luciano Mittmann <mittm...@gmail.com>
> >>
> >> Boa tarde Jorge,
> >>
> >> Dia desses procurei algo parecido com isso no histórico da lista e
> >> encontrei algo que pode te ajudar:
> >>
> >>
> >>
> http://listas.postgresql.org.br/pipermail/pgbr-geral/2008-August/011406.html
> >>
> >> Trata-se de uma discussão sobre busca por meias palavras utilizando o
> >> tsearch.
> >>
> >>
> >> Luciano Mittmann.
> >>
> >> 2009/5/22 Jorge Vilela <jorge.com...@gmail.com>
> >>>
> >>> Bom dia pessoal!
> >>> Tenho uma busca em duas tabelas (Produto e marca)
> >>> O SQL é +/- assim:
> >>> SELECT produto.descricao, marca.descricao FROM produto JOIN marca ON
> >>> (produto.id=marca.id)
> >>> WHERE to_tsvector(to_ascii(produto.descricao) || ' ' ||
> >>> to_ascii(marca.descricao)) @@ to_tsquery(to_ascii('STRINGDEBUSCA'))
> >>>
> >>>
> >>> O problema é que esse tipo de busca FULL-TEXT não funciona como %like%.
> >>> Se eu buscar por "COMPUTAD" ele não encontra "COMPUTADOR".
> >>>
> >>> Alguém conhece alguma forma de melhorar a busca com to_tsvector e
> >>> to_tsquery?
> >>> _______________________________________________
>
>
>
> Se eu entendi corretamente tente a função array_to_string(anyarray, text).
> http://www.postgresql.org/docs/current/interactive/functions-array.html
>
> Osvaldo
> _______________________________________________
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Reply via email to