Olá jorge,

Eu encontrei o mesmo problema que você quando eu estava implementando o FTS,
não consegui encontrar nada para que eu consegui-se resolver esse problema.

Depois de um tempo eu descobri um cara que é usado junto ao FTS, que cria
todas as possibilidade possíveis para o campo indexado, infelizmente não
implementei ele, e portanto não lembro qual era a contrib para isso.

talvez se você der uma procurada no pgfoundry [1], foi lá que eu achei ele.

[1] http://pgfoundry.org/

Rafael Domiciano

2009/5/25 Jorge Vilela <[email protected]>

> 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 <[email protected]>
>
> 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 <[email protected]>
>>
>>  2009/5/22 Jorge Vilela <[email protected]>:
>>> > 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 <[email protected]>
>>> >>
>>> >> 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 <[email protected]>
>>> >>>
>>> >>> 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
>>> [email protected]
>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>
>>
>>
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a