[Resolvido]Como consultar textos dentro de um arquivo .pdf e .doc no Postgres?

8 respostas
S

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.

8 Respostas

H

PQ você não faz isso por fora do Postgres? Pelo java mesmo?

E

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.

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.

S

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.

H

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.Saquei.

Nunca tinha ouvido algo disso a respeito de banco. Bom saber. [=

Vamos ver se alguém ajuda.

E

É 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

A

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+

A

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+

+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

S

Obrigado a todos pela ajuda. Irei pesquisar sobre as opções que me foram apresentadas.

Criado 5 de março de 2013
Ultima resposta 6 de mar. de 2013
Respostas 8
Participantes 5