Hibernate Search 3.0.0.Beta2推出了许多新的有趣功能

  • 共享Lucene IndexReader,显著提高了性能,尤其是在读取为主的应用程序中
  • 自定义对象图抓取策略的能力
  • 从Lucene索引中投影属性
  • 排序查询的能力(感谢Hardy Ferentschik)
  • 暴露无论分页与否的匹配结果总数
  • 以及其他惊喜和错误修复,更多信息请查看发行说明

性能

Hibernate Search现在可以共享IndexReader在查询和线程之间,这使得它们更加高效,尤其是在读取次数远多于更新次数的应用程序中。与单个查询相比,打开和预热LuceneIndexReader可能是一个相对昂贵的操作。要启用共享,只需添加以下属性

hibernate.search.reader.strategy shared

对象加载也得到了增强。例如,您可以定义用于加载预期对象图的精确抓取策略,就像您在Criteria或HQL查询中做的那样,从而允许针对特定用例进行优化。

某些用例不需要完全加载的对象。Hibernate Search现在允许从Lucene索引中投影属性。以在索引中存储值的代价,您现在可以检索特定属性子集。行为类似于HQL或Criteria查询投影。

fullTextQuery.setIndexProjection( "id", "summary", "body", "mainAuthor.name" ).list();

查询灵活性

我已经谈到了可自定义的抓取策略和投影。

Hibernate Search查询的默认排序是按相关性排序,但现在您可以自定义此策略并按字段排序。

无论分页过程如何,了解匹配元素的总数都很有趣。虽然在纯SQL中这很昂贵,但Apache Lucene提供了此信息。getResultSize()现在通过FullTextQuery暴露。从这个信息中,您可以例如

  • 实现搜索引擎功能“1-10约888,000,000”
  • 实现快速分页导航
  • 实现一个多步骤搜索引擎(如果受限制的查询(或查询)没有返回或返回不足的结果,则逐渐启用近似值)

更多信息,请查看发行说明下载包。Hibernate Search 3.0.0.Beta2与Hibernate Core 3.2.x(从3.2.2)、Hibernate Annotations 3.3.x和Hibernate EntityManaher 3.3.x兼容。


返回顶部