我们刚刚发布了 Hibernate Search 6.0.0.Beta7。
此版本主要改进了多值或嵌套字段上的排序和聚合,引入了通过字段模板的动态索引字段,恢复了索引元模型,并恢复了低级 Lucene 设置。它还包括了升级到 Hibernate ORM 5.4.15.Final。
新增功能
在多值/嵌套字段上的更好的排序和聚合
从 Hibernate Search 6.0.0.Beta7 开始,Lucene 后端中的聚合现在可以正确地处理多值字段(《HSEARCH-1927》和《HSEARCH-1929》),以及嵌套文档中的字段(《HSEARCH-3892》)。
此外,现在对排序和聚合都支持过滤,前提是排序或聚合的字段位于嵌套文档中(HSEARCH-3846,HSEARCH-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进行配置。
版本升级
-
HSEARCH-3907:升级到Hibernate ORM 5.4.15.Final
Hibernate Search 6需要ORM 5.4.4.Final或更高版本才能正常工作。较早的5.4.x版本将无法正常工作。 |
向后不兼容的更改
-
HSEARCH-3898:
SearchQuery.explain(String, String)
现在期望传递映射类型的名称,而不是索引的名称。
文档
-
HSEARCH-3887:文档不再错误地声明路由键不会触发过滤。
-
HSEARCH-3879:与线程池和索引相关的配置选项现在解释得更清楚。
其他改进和错误修复
-
HSEARCH-3886:在按字段值排序中,现在默认将缺失值的文档排序到最后,而不是插入到“零”值旁边。
-
HSEARCH-3896:对相同的
SearchQuery
多次调用.fetch
现在工作正常。 -
HSEARCH-3897 和 HSEARCH-3898:现在
explain()
在具有自定义名称的索引上工作正常;当查询针对多个类型时,应传递 JPA 类型名称而不是索引名称。 -
HSEARCH-3901:传递给
PropertyMappingAnnotationProcessor
/TypeMappingAnnotationProcessor
的上下文现在公开了一个annotatedElement()
方法,用于检查注解元素(类型、名称和注解)。 -
HSEARCH-3911:现在
LuceneSearchResult
公开了getTopDocs()
方法。 -
HSEARCH-3914:现在
LuceneSearchQuery
公开了getLuceneSort()
方法。
还有更多。有关自上次发布以来所有更改的完整列表,请参阅发布说明。
如何获取此版本
所有详细信息均可在hibernate.org上的专用页面上找到并保持最新。