Pessoal
Agora eu encuquei com isso.... É assim mesmo que todo mundo faz FULL-TEXT
SEARCH no postgres?



TO_TSVECTOR(ARRAY_TO_STRING(SHOW_TRGM(campo), ' ')) @@
TO_TSQUERY('meia_palavra')



O que está acontecendo é que: SHOW_TRGM não retorna todas as possibilidades!
Vejam:

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


Logo, se a pessoa pesquisar por 'monit', não encontrará nada no math @@

Alguém já conseguiu implementar pesquisa FULL-TEXT no postgres?
















2009/5/23 Jorge Vilela <jorge.com...@gmail.com>

> 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

Responder a