A última versão do Hibernate Search, um framework open source de consulta nos objetos domínio do grupo Hibernate, recebeu melhorias nos mecanismos de análise de buscas dinâmicas e indexação e também no desempenho no tempo de consulta. O time de desenvolvimento do Hibernate Search anunciou o lançamento da versao 3.1 do framework. A nova versão também inclui funcionalidades como suporte a term vector nas buscas e na criação dos índices dos objetos, acesso pelo escopo do analisador no momento de execução da consulta e acesso ao objeto Results Explanation.
Analyzer Model:
- TO novo analisador de modelo pode ser configurado declarativamente para uso e criação de funcionalidades como aproximação fonética, aproximação n-gram, busca por sinônimos, filtragem por "stop words", elision correction e busca por caracteres não acentuados.
- Os analisadores podem ser composto como "tokenizadores" e por um conjunto de filtros usando o componente Apache Solr.
- Analisadores Dinâmicos: Estes permitem que uma entidade defina qual analisador usar em tempo de execução, o que é útil em aplicações internacionalizadas onde a localidade de uma entidade é diferente de outra.
Indexing:
As melhorias no tempo de indexação são:
- Melhor controle sobre a indexação manual e escrita do índice (consumo de RAM, non-compound file format flag, etc).
- Suporte para term verctor e personalização de similaridade.
- Melhor suporte para replicação de índices grandes.
- Melhorado tempo de bloqueio e contenção durante a criação/atualização dos índices assim como a redução do número de abertura/fechamento dos mesmos.
- Os índices agora são criados em paralelo para cada diretório.
Consulta:
Novas funcionalidades foram adicionadas para melhoria no tempo de consulta como as seguintes:
- Foi exposto o analisador do escopo das entidades para facilitar o reuso e melhorar o tempo de consulta.
- Filtragem de resultados (DocIdSet) pode ser posto em cache declarativamente.
- Explanation está exposto para melhor depurar a informação.
- Reduzido o número de roundtrips ao banco de dados em consulta a múltiplas entidades.
- As consultas Lucene estão mais rápidas em índices contendo um único tipo de entidade e reduzido o consumo de E/S no Lucene por ler somente o campos necessários de um documento (quando possível).
- Melhor desempenho em propriedades projetadas (melhoria não percebida se for comparada com chamadas diretas ao Lucene).
- Redução na leitura de documentos (durante a paginação e nas chamadas do getResultSize()).
- Reabertura de índices mais rápidas (mantendo segmentos não alterados abertos) e melhor leitura de índice em concorrência (uso do controle de somente leitura).
Emmanuel Bernard blogou sobre o novo lançamento e suas características que ais quais incluem uso do SLF4J como o framework de logging e a migração para versão 2.4 do Lucene, versao 3.3 do Hibernate Core e JDK 5.0. Hibernate Search trabalha em modos não-cluterizados e clusterizados, fornece atualização síncronas e assíncronas de índices, dando a opção de escolher entre tempo de resposta, throughput e atualização. Ele também trabalha com todos tradicionais padrões do Hibernate, especialmente o grande (e atômico) padrão conversacional usado pelo JBoss Seam.
A última versão pode ser baixada no site dele e os logs de mudança estão disponíveis no JIRA. Migrar para essa versão é recomendada para todos os usuários (veja o guia de Migração). O documento road map mostra as novas funcionalidades que o time do Hibernate Search está planejando para futuros lançamentos do framework.