Criteria Hibernate e Logica Booleana Avançada

5 respostas
D

Olah pessoal,

Estou precisando fazer um sistema, algo como um engenho de busca, para consultas avancadas em um banco contendo dados textuais. Alguem como usando JPA e Criteria do Hibernate. Contudo, estou encontrando o seguinte obstaculo: preciso implementar os operadores logicos E, OU, ADJ e PROX, especificados em http://www.stj.gov.br/SCON/jurisprudencia/SOS_simplificado.htm . Para facilitar o entendimento da questao, transcrevi a parte que interessa no texto do link anterior.

‘E’ localiza as palavras digitadas mesmo estando distantes entre si dentro de um julgado. Ex.: protesto E dano moral.

‘OU’ localiza um e/ou outro termo no julgado. Os termos procurados por esse critério devem vir sempre entre parênteses. Ex.: (desapropriaçao OU expropriaçao)

O ‘PROX’ é um conectivo que tem como função delimitar a distância entre as palavras digitadas recuperando-as em qualquer ordem em que aparecerem no julgado. Ex1.: protesto PROX4 dano moral Ex2.: Bagagem PROX2 extraviada.

O ‘ADJ’ é um conectivo que tem como função delimitar a distância entre as palavras observando na recuperação a ordem em que foram digitadas. Ex1.: extravio ADJ2 bagagem Ex2.: Mandado ADJ2 segurança

Os operadores E e OU consido implementar facilmente no Criteria, utilizando os comandos Expression.and e Expression.or. Esses jah estao funcionando corretamente. Contudo, nao tenho encontrado nada que possa me ajudar na automacao dos comandos PROX e ADJ. Alguem pode me dar uma luz?

5 Respostas

maquiavelbona

Cara, para o que você quer, o mais simples é usar um indexador como o Lucene. Parte dessas coisas que você colocou em pauta já existem para ele. Vale a pena dar uma olhada.

Adendo: lembrei que tinha um artigo sobre o Hibernate Search, que pode resolver parte dos seus problemas
http://blog.caelum.com.br/2007/06/13/hibernate-search-com-lucene/

Até!

D

Ola, maquiavelbona!

Estou precisando disso para implementar um sistema que o chefe do meu chefe me pediu =) Pensei em usar o Criteria, pois grande parte do meu sistema jah estah escrito em JPA (com Hibernate) e JSF. Soh acrescentando mais dados, o banco que estou usando eh o Oracle 10g, com campos blobs indexados, para a otimizaçao das buscas.

Com relacao ao Lucena, vou dar uma olhada no site que voce me passou. Depois entro em contato dizendo se eh isso ou nao que preciso.

Obrigado

maquiavelbona

As funções de full-text search do Oracle não te satisfazem?

Até!

D

Olá maquiavelbona, obrigado pela dica!!

C

up

Criado 8 de fevereiro de 2008
Ultima resposta 20 de mar. de 2008
Respostas 5
Participantes 3