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
