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