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

您的要求,我们实现了:Hibernate Search 5.7.0.Final,支持Hibernate ORM 5.2.8,现已发布!当然,就像之前的版本一样,它还包含对Elasticsearch集成的实验性支持(甚至有一些改进)。

卡在旧版本的ORM上?不用担心,我们还发布了5.6版本的修复版本,即5.6.1.Final。

Hibernate Search 5.7.0.Final仅与Hibernate ORM 5.2.3及更高版本兼容。没有与Hibernate ORM 5.2.0至5.2.2兼容的Hibernate Search版本。

如果您需要使用Hibernate ORM 5.0.x或5.1.x且无法升级,请使用Hibernate Search 5.6.1.Final。

5.7版本自候选版本发布以来有哪些新功能?

以下是自候选版本发布以来的主要变更。

如果您需要迁移建议,请参阅迁移指南

有关自5.7.0.CR1以来的完整变更列表,请参阅发行说明。有关自5.6.0.Final以来的完整变更列表,请参阅我们JIRA实例上的此票证列表

一般改进

  • HSEARCH-2574:在合理的情况下,您现在可以在单个属性/方法上重复使用Hibernate Search注解。例如,如果您想在同一个title属性上添加两个索引字段,您可以写

        @Field(analyzer = @Analyzer(definition = "myAnalyzer")
        @Field(name = "title_sort", analyzer = @Analyzer(definition = "myAnalyzerForSort")
        private String title;

    因此,您不再需要使用复合注解(@Fields)。但当然,这些注解仍然可用。

  • HSEARCH-2588:Sort DSL 中的一些方法允许显式指定排序字段类型,这在通过自定义字段桥接器添加的字段上进行排序时非常有用。我们改进了对 MetadataProvidingFieldBridge 的支持,现在您只需要在您的自定义字段桥接器上实现此接口,并且在使用排序 DSL 时不再需要任何特殊处理。因此,排序 DSL 中的 byField(String, SortField.Type)andByField(String, SortField.Type) 方法已被弃用。

  • HSEARCH-2587:在使用 Sort DSL 对嵌入式(@IndexedEmbedded)字段进行排序时可能会发生 NPE;现在已修复。

  • HSEARCH-2576:查询中已删除不必要的内存分配,从而提高了查询吞吐量。

  • 并且对其他集成 Hibernate Search 的解决方案进行了多项改进,如 HSEARCH-2597HSEARCH-2561HSEARCH-2418HSEARCH-2585

Elasticsearch 特定改进

  • HSEARCH-2453:Elasticsearch 认证现已完全实现:有专门的 usernamepassword 属性,因此您不再需要将凭据嵌入到 URL 中。

  • HSEARCH-2593:在使用 Elasticsearch 的自动节点发现时,无法自动检测新发现的节点的方案(HTTP 或 HTTPS);默认为 HTTP。现在您可以自定义它以使用 HTTPS:只需将 hibernate.search.default.elasticsearch.discovery.default_scheme https 添加到您的配置中。

  • HSEARCH-2590:在某些情况下,使用分页的查询可能会分配过多的内存;现在已修复。

5.6 中的新内容

5.6.1.Final 仅包含从 5.7 返回的修复。您可以在 发行说明 中查看自 5.6.0.Final 以来所有更改的完整列表。

接下来是什么?

我们现在专注于以下两个重大改进

  • 支持 Elasticsearch 5 而不丢失对 Elasticsearch 2 的支持(HSEARCH-2434HSEARCH-2581)。这将在 5.8 版本中实现。

  • 简化我们的 API,特别是更好地适应远程索引服务(如 Elasticsearch),同时支持 Lucene 6。由于这需要破坏性更改,我们将这些更改包含在新的主要版本 Hibernate Search 6.0 中。

如何获取这些版本

所有版本均可在 Hibernate Search 的 网站 上找到。

理想情况下,使用工具从 Maven central 获取它;这些是坐标

<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-search-orm</artifactId>
   <version>5.7.0.Final</version>
</dependency>

要使用实验性的 Elasticsearch 集成,您还需要

<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-search-elasticsearch</artifactId>
   <version>5.7.0.Final</version>
</dependency>

Sourceforge 下载也可用。

反馈、问题、想法?

要取得联系,请使用以下渠道


返回顶部