Re: [pgbr-geral] like e FULL-TEXT search
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 jorge.com...@gmail.com 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 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] like e FULL-TEXT search
PGFoundry realmente tem projetos muito bons, eu espero não ter que abandonar o tsvector @@ tsquery =( Gostei bastante e o resultado parece muito satisfatório 2009/5/25 Rafael Domiciano rafael.domici...@gmail.com 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 jorge.com...@gmail.com 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 ___ 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
Re: [pgbr-geral] like e FULL-TEXT search
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? ___ 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
Re: [pgbr-geral] like e FULL-TEXT search
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? ___ 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 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] like e FULL-TEXT search
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