A nova versão do Hibernate Search, recentemente lançada, adiciona funcionalidades importantes, como Faceting, FieldCache e a possibilidade de priorizar o uso do cache de segundo nível. Há ainda melhorias de desempenho e uma reorganização no mecanismo de consultas, além da atualização nas dependências do Hibernate Core e do Apache Lucene.
O Hibernate Search é um framework open source para consultas avançadas em objetos de domínio. Traz o poder da pesquisa textual (full-text search) para a camada de persistência, combinando o Hibernate Core com as funcionalidades do Apache Lucene.
Entre as novas funcionalidades do Hibernate Search 3.4, o destaque é o Faceting, uma técnica de categorização também conhecida como faceted search, que divide o resultado de uma pesquisa em múltiplas categorias. No Hibernate Search, essa funcionalidade inclui a contagem dos registros por categoria e a possibilidade de refinar os resultados da pesquisa navegando-se entre as categorias encontradas. É o mesmo conceito de pesquisa utilizado pela Amazon: esta imagem extraída da documentação do projeto mostra um exemplo de busca com faceting na Amazon.com.
Outras novidades da versão 3.4 envolvem alterações na API e em dependências do framework:
- Foi priorizada a consulta de entidades no cache de segundo nível, no lugar de na base de dados. Nesse trecho da documentação do Hibernate Search há um exemplo de como utilizar a nova funcionalidade.
- A dependência com a API do Lucene foi atualizada: o Hibernate Search 3.4 passa a utilizar o Apache Lucene 3.1.
- A engine de consultas do Hibernate Search foi isolada do Hibernate Core. Assim, a engine pode ser utilizada, por exemplo, pelo módulo de consulta do Infinispan.
Quanto às melhorias de desempenho, estes são os detalhes:
- A reindexação das entidades agora só ocorre quando algum atributo utilizado no índice é modificado. Dessa maneira, uma mudança em um atributo não indexado continua gerando atualização no repositório de dados, via Hibernate Core, mas não aciona a reindexação do Hibernate Search.
- A funcionalidade MassIndexer, utilizada para reconstruir os índices com diversas threads trabalhando paralelamente, agora também opera com várias threads durante a fase de análise de textos.
- Na versão 3.4, foi habilitdo o uso de FieldCache para melhorar a desempenho dos índices através do caching do tipo e do identificador da entidade.
No changelog da nova versão, é possível verificar outras pequenas modificações e correções de bugs no framework.
Um detalhe final: o Hibernate Search agora é compatível com o Hibernate Core 3.6; a equipe do Hibernate Search disponibilizou um guia para auxiliar os desenvolvedores a realizarem a migração de versão.
O Hibernate Search 3.4 já está disponível no respositório do Maven e pode também ser obtido via download direto.