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

我们刚刚发布了 Hibernate Search 6.0.0.Beta7。

此版本主要改进了多值或嵌套字段上的排序和聚合,引入了通过字段模板的动态索引字段,恢复了索引元模型,并恢复了低级 Lucene 设置。它还包括了升级到 Hibernate ORM 5.4.15.Final。

Hibernate Search 6 入门

如果您想直接进入全新的 Hibernate Search 6,参考文档中的 入门指南 是一个很好的起点。

Hibernate Search 6 的 API 与 Hibernate Search 5 有很大不同。

有关迁移的更多信息以及我们打算如何帮助您,请参阅 迁移指南

新增功能

在多值/嵌套字段上的更好的排序和聚合

从 Hibernate Search 6.0.0.Beta7 开始,Lucene 后端中的聚合现在可以正确地处理多值字段(《HSEARCH-1927》和《HSEARCH-1929》),以及嵌套文档中的字段(《HSEARCH-3892》)。

此外,现在对排序和聚合都支持过滤,前提是排序或聚合的字段位于嵌套文档中(HSEARCH-3846HSEARCH-3881)。这在按通常具有多个值的字段排序特别有用,但在应用查询条件后变为单值。例如,考虑按价格排序的T恤搜索,其中每件T恤都有自己的多个尺寸和价格;当搜索特定尺寸的T恤时,您可能只想按该尺寸的每件T恤的价格排序。有关详细信息,请参阅参考文档:[排序](https://docs.jboss.com.cn/hibernate/search/6.0/reference/en-US/html_single/#search-dsl-sort-common-filter)和[聚合](https://docs.jboss.com.cn/hibernate/search/6.0/reference/en-US/html_single/#search-dsl-aggregation-common-filter)。

感谢Waldemar Kłaczyński为使这一切成为可能所做的基础工作。

通过字段模板动态索引字段

HSEARCH-3273以来,只要您声明了匹配的字段模板,就可以向文档中添加字段,即使它们之前未声明。

这意味着您可以实现一个桥接器来索引无模式的JSON对象,例如,只要JSON对象的属性遵循您自己设置的特定约定(如整数使用*_int,文本使用*_txt等)。

您可以通过定义自定义桥接器来声明字段模板;有关更多信息,请参阅参考文档的这一部分

索引元模型

HSEARCH-3589以来,Hibernate Search公开了一个索引的元模型,有效地允许查找特定索引的字段及其特征。有关更多信息,请参阅参考文档的这一部分

Lucene后端的高级配置

HSEARCH-3776以来,已恢复与Lucene IndexWriter相关的几个低级配置选项。有关索引写入器设置,请参阅此处,有关合并设置,请参阅此处

HSEARCH-3777以来,在Lucene后端进行索引和搜索时使用的Similarity可以通过LuceneAnalysisConfigurer进行配置。

版本升级

Hibernate Search 6需要ORM 5.4.4.Final或更高版本才能正常工作。较早的5.4.x版本将无法正常工作。

向后不兼容的更改

  • HSEARCH-3898SearchQuery.explain(String, String)现在期望传递映射类型的名称,而不是索引的名称。

文档

  • HSEARCH-3887:文档不再错误地声明路由键不会触发过滤。

  • HSEARCH-3879:与线程池和索引相关的配置选项现在解释得更清楚。

其他改进和错误修复

  • HSEARCH-3886:在按字段值排序中,现在默认将缺失值的文档排序到最后,而不是插入到“零”值旁边。

  • HSEARCH-3896:对相同的 SearchQuery 多次调用 .fetch 现在工作正常。

  • HSEARCH-3897HSEARCH-3898:现在 explain() 在具有自定义名称的索引上工作正常;当查询针对多个类型时,应传递 JPA 类型名称而不是索引名称。

  • HSEARCH-3901:传递给 PropertyMappingAnnotationProcessor/TypeMappingAnnotationProcessor 的上下文现在公开了一个 annotatedElement() 方法,用于检查注解元素(类型、名称和注解)。

  • HSEARCH-3911:现在 LuceneSearchResult 公开了 getTopDocs() 方法。

  • HSEARCH-3914:现在 LuceneSearchQuery 公开了 getLuceneSort() 方法。

还有更多。有关自上次发布以来所有更改的完整列表,请参阅发布说明

如何获取此版本

所有详细信息均可在hibernate.org上的专用页面上找到并保持最新。

反馈、问题、想法?

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


返回顶部