Hibernate Search 4 即将到来

发布者:    |       Hibernate Search

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

Hibernate Search 4 的发布周期已经开始。Alpha 1 已发布。我们已经实现了许多功能,因此这个变更是一致的,并将有更多版本快速发布。

Hibernate Search 4 的目标是双重的

  • 与新的 Hibernate Core 4 版本兼容。
  • 进行必要的架构更改,以实现 Hibernate Search 的未来目标。

特别是,使 Hibernate Search 与 Hibernate Core 独立,并允许更可扩展的 受云影响的 后端。

这个版本已经包含了大量的更改

在 API / SPI 和实现类之间进行拆分

每个类现在都被归类为 API、SPI 或实现类。

  • API(在 常规 包中)可以在您的应用程序中使用,我们尽力不破坏这些契约
  • SPI(在.spi包中)是用于与 Hibernate Search 集成的框架(如 Infinispan 的搜索模块)所使用的类。这些契约相当稳定,但可能会比 API 更频繁地更改
  • 实现(在.impl包中)是实现细节。不要让您的应用程序依赖于这些。

如果您是位好公民,并且只使用了 API,您应该不会受到影响。如果您使用了 SPI 或内部类,您将需要调整。请查看我们的维基页面上的 迁移指南

迁移到 JBoss Logging 和错误代码

JBoss Logging 具有一些不错的功能,包括错误国际化消息中的错误代码。您将能够通过 Google HSEARCH00043 来了解您遇到此类问题的原因。

与 Hibernate Core 4 的集成

无需多言。

迁移到每个索引的后端架构

这将为您提供更多灵活性,以根据您的需求对实体进行索引,并允许在未来进行额外的优化。您可以为每个索引使用不同的技术,例如,对于需要实时聚类的索引,可以使用Lucene后端,而对于其他索引则可以使用Infinispan索引。此外,现在您可以分别配置每个索引的性能参数,从异步/同步选项到后端执行器中的工作线程数量和队列大小。

MassIndexer不再处于独占模式

MassIndexer不再锁定Hibernate事件的主后端监听器,因此可以在其他事务运行时启动它。然而,在完成之前,索引中可能会缺少一些结果。

远程后端之间新的二进制通信格式

Lucene不再保证可序列化文档字段的协议。当您使用Hibernate Search的集群模型时,这是一个问题。

因此,我们在JMS和JGroups后端中引入了一种新的通信协议,以便它们可以安全地传递Lucene工作。这与我们屏蔽您免受Lucene在未来版本中可能做出的不兼容更改的愿望相一致。我们还想使升级Hibernate Search节点集群变得更加容易,并在可能的情况下让它们在不出现问题的情况下交互。

因此,现在您可以在集群环境中使用NumericField,这在以前是不可能的,因为它从未可序列化.

在性能上具有侵略性

后端现在在写入性能上相当具有侵略性,默认启用exclusive_index_use并从MassIndexer后端合并了一些性能技巧到标准后端中,以充分利用它们。例如,新的后端设计允许我们在多个线程中分析文档,同时仍然保证写入以正确的顺序发生。这通过worker.thread_pool.size属性进行配置,默认为1,并且即使对于配置为同步更新的后端也适用。

获取发布

这就是现在的全部内容,请查看发布并确保阅读迁移指南

衷心感谢社区和D'Alto Davide的贡献,以及Adam Harris、Samppa Saarela和Elmer van Chastelet对性能和设计改进的建议。


回到顶部