Re: [pgbr-geral] like e FULL-TEXT search

2009-05-25 Por tôpico Rafael Domiciano
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

2009-05-25 Por tôpico Jorge Vilela
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

2009-05-22 Por tôpico Luciano Mittmann
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

2009-05-22 Por tôpico Jorge Vilela
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-05-22 Por tôpico Osvaldo Kussama
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