我们对查询引擎进行了大规模重构,因此标为alpha版。如果您能集中测试这个区域并查看是否存在任何问题,我们将不胜感激。

本次发布包含常规的错误修复、优化和新特性。

查询引擎重构

这是一个大项目,目标是确保它不会影响到您。我们的中期目标是使Hibernate Search不依赖于Hibernate Core。将查询引擎核心提取到定义良好的SPI(服务提供者接口)是这个目标的一个里程碑。第一个受益者是无缓存查询模块,它将能够更好地应对Hibernate Search版本变化。

如前所述,测试您的应用程序查询。它们应该仍然在没有任何API更改的情况下运行。如果否则,请告诉我们。

仅在索引属性更改时更新索引

在之前的版本中,当@Indexed实体在Hibernate Core中更改时,即使没有任何索引属性实际更改(毕竟并非所有属性都进行了索引),Hibernate Search也会重新索引实体。Hibernate Search 3.4在这个方面更聪明,并尝试不重新索引索引属性未更改的实体。在某些情况下,例如动态提升或类级桥接,Hibernate Search无法确定,因此始终重新索引以确保安全。

此优化应显著提高某些应用程序的速度。有关更多信息,请参阅文档。

在二级缓存中查找实体

在某些环境中,大多数甚至所有要搜索的实体都在二级缓存中。这在使用Infinispan等分布式二级缓存时尤其如此。您可以要求Hibernate Search在尝试从数据库获取数据之前先在二级缓存中查找实体。

FullTextQuery query = session.createFullTextQuery(luceneQuery, User.class);
query.initializeObjectWith(
    ObjectLookupMethod.SECOND_LEVEL_CACHE,
    DatabaseRetrievalMethod.QUERY
);
List results = query.getResultList();

当然,您的实体必须是可缓存的。如果您的实体很可能在持久化上下文中(Hibernate会话中),则可以使用ObjectLookupMethod.PERSISTENCE_CONTEXT代替。

MassIndexer改进

质量索引模块进行了一些改进。

  • 文本分析阶段的多线程。
  • 通过允许您插入自定义实现(参见MassIndexerProgressMonitor),改进了对质量索引模块状态和进度的监控。

分面搜索。

这是一个非常受欢迎且有用的特性,现在您可以尝试新分面搜索引擎API的第一个alpha预览版。

字段缓存。

现在可以使用Lucene的FieldCache来为查询性能提供额外的提升:请参阅参考文档

其他性能改进。

我们找到了一些技巧来提高整体性能。我们更加积极地缓存一些元数据以降低反射开销,并且为您在Lucene中推送了一些额外的按钮以减少查询时间。

给我们反馈。

请给我们反馈,我们有一个积极的发布计划,因为我们正在计划本月底的GA版本。

在JBoss.org的Maven 仓库下载发行版上查看新版本。您还可以阅读文档

如果您发现任何问题,请提交


返回顶部。