Boa noite a todos,
antes de tudo me perdoem caso esta seja a área errada para perguntar isso.
Bem, existe alguma forma de através de uma Query eu pesquisar os textos de um arquivo .doc ou .pdf e ele me retornar apenas os documentos que possuem os (ou alguns) dos parâmetros que eu passar pela Query usando o Postgres? Se sim, qual o nome dessa “técnica”?
Tudo o que eu achei foi FTS mas pelos exemplos que eu vi isso só funciona com o campo texto (e não bytea) mas pode ser que eu tenha entendido errado.
PQ você não faz isso por fora do Postgres? Pelo java mesmo?
[quote=Sem_Nome]Boa noite a todos,
antes de tudo me perdoem caso esta seja a área errada para perguntar isso.
Bem, existe alguma forma de através de uma Query eu pesquisar os textos de um arquivo .doc ou .pdf e ele me retornar apenas os documentos que possuem os (ou alguns) dos parâmetros que eu passar pela Query usando o Postgres? Se sim, qual o nome dessa “técnica”?
Tudo o que eu achei foi FTS mas pelos exemplos que eu vi isso só funciona com o campo texto (e não bytea) mas pode ser que eu tenha entendido errado.[/quote]
Uma forma de fazer isso e que funcione perfeitamente com qualquer banco é ter 2 colunas para cada documento: uma contendo o texto “puro” do documento, (ou então, no caso do PostgreSQL, contendo o tsvector gerado a partir do texto “puro”) e outra contendo o documento em forma binárias (PDF, DOC, XLS etc.).
Para converter o documento PDF ou DOC em “texto puro” é necessário algum trabalho “por fora do PostgreSQL”, ou seja, pode ser no programa em Java (ou alguma outra linguagem) que faça o cadastramento desses documentos.
Mas não ficaria muito lento? Eu imagino que seria algo como:
Ele teria que pegar todos os arquivos do banco de dados e passar para o Java e só ai começar a verificar um por um.
Já pelo banco de dados ele faria lá mesmo.
Eu ouvi dizer que existe uma forma de fazer pelo banco (o que para mim seria a solução ideal) mas caso não exista como optarei pelo Java.
Mas não ficaria muito lento? Eu imagino que seria algo como:
Ele teria que pegar todos os arquivos do banco de dados e passar para o Java e só ai começar a verificar um por um.
Já pelo banco de dados ele faria lá mesmo.
Eu ouvi dizer que existe uma forma de fazer pelo banco (o que para mim seria a solução ideal) mas caso não exista como optarei pelo Java.[/quote]Saquei.
Nunca tinha ouvido algo disso a respeito de banco. Bom saber. [=
Vamos ver se alguém ajuda.
É uma coisa que você tem de fazer apenas uma vez, portanto não vai ficar “lento”.
Além disso, o “tsvector” é bem menor que o “texto puro” resultante da conversão, ou seja, não vai aumentar muito o tamanho do banco.
Leia com atenção a documentação do PostgreSQL, em http://www.postgresql.org/docs/8.3/static/textsearch-intro.html#TEXTSEARCH-DOCUMENT
Cara,
não utilize banco de dados para fazer consulta em texto, utilize o apache solr que se utiliza do lucene, sua aplicação será bem mais eficiente.
t+
[quote=alissonvla]Cara,
não utilize banco de dados para fazer consulta em texto, utilize o apache solr que se utiliza do lucene, sua aplicação será bem mais eficiente.
t+[/quote]
+1 .
Mas tem uma coisa… eu acredito que exista a possibilidade de implantar uma função Java no banco (sei que dá pra fazer isso no Oracle, não sei no Postgres).
[]'s
Obrigado a todos pela ajuda. Irei pesquisar sobre as opções que me foram apresentadas.