Hibernate Search 3.0.1

发布者    |       Hibernate Search Seam

Hibernate Search 是一个库,它通过自动索引实体,将 Hibernate ORM 与 Apache Lucene 或 Elasticsearch 集成,从而启用高级搜索功能:全文搜索、地理空间搜索、聚合等。更多信息,请参阅 hibernate.org 上的 Hibernate Search。

自 Hibernate Search 的最新发布以来已经有一段时间了,但由于代码库相当稳定且无错误,我们一直保持到现在。但现在有一些有趣的功能已经不能再等待了

  • 所有集合更改的透明重新索引
  • 支持 Lucene 2.3(性能改进和稳定性)
  • 查询结果转换器使投影更加友好

集合更改的透明重新索引

终于!这个功能已经让一些人困扰了一段时间。如果您使用 Hibernate 3.2.6,Hibernate Search 将在集合更改时重新索引实体。请确保添加适当的附加事件监听器

        <event type="post-collection-recreate"/>
            <listener class="org.hibernate.search.event.FullTextIndexCollectionEventListener"/>
        </event>
        <event type="post-collection-remove"/>
            <listener class="org.hibernate.search.event.FullTextIndexCollectionEventListener"/>
        </event>
        <event type="post-collection-update"/>
            <listener class="org.hibernate.search.event.FullTextIndexCollectionEventListener"/>
        </event>

当 Hibernate Annotations 3.3.1 发布时(代码已经检查入),此事件监听器配置将透明执行。

Lucene 2.3

Hibernate Search 现在运行 Lucene 2.3。Hibernate Search 与 Lucene 2.2 完全向后兼容,但我们强烈建议您迁移到 Lucene 2.3(包含在最新的 Hibernate Search 分发中),因为 Lucene 团队已经进行了一些有趣的功能改进(我知道,他们又做到了)。

查询结果转换器s

投影查询在某些性能关键情况下是一个有用的工具,但返回的结果是List<Object[]>:不用说,对开发人员来说不是非常友好。

结果转换器,已用于常规 Hibernate Core 查询以处理结果,现在也可以用于 Hibernate Search 查询。

FullTextQuery query = s.createFullTextQuery( query, Employee.class );
query.setProjection("id", "lastname", "department");
query.setResultTransformer( new AliasToBeanResultTransformer(EmployeeView.class) );
List<EmployeeView> results = (List<EmployeeView>) query.list();

以及其他一些错误修复

引入了一些额外的错误修复和增强功能,包括@IndexedEmbedded在多个级别使用,Hibernate Search 过滤器缓存现在实际上使用标准的 LuceneCachingWrapperFilter等等。

发行版可以在此处下载,完整的变更日志可以在此处找到。

祝您使用愉快


返回顶部