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

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.