我很高兴地宣布Hibernate Search 3.1的GA版本发布。这个版本着重于性能提升和代码健壮性,同时也添加了一些有趣的新功能,专注于易用性。

  • 一个分析器配置模型,可以声明式地使用和组合如音韵近似、n-gram近似、通过同义词搜索、停用词过滤、省略纠正、无重音搜索等功能。
  • 索引时性能得到了显著提升(包括减少锁竞争、并行执行)。
  • 查询时性能也得到了显著提升(包括Lucene和SQL的I/O减少,以及更好的并发性)。
  • 新增了许多索引和查询方面的功能(包括对词向量支持、查询时对范围分析器的访问以及访问结果解释)。

以下是功能的更详细概述

分析器

  • 通过Solr库支持声明式分析器组合

分析器现在可以声明式地组合为一个分词器和一系列过滤器。这使得以下功能的组合变得简单:音韵近似、n-gram近似、通过同义词搜索、停用词过滤、省略纠正、无重音搜索等等。

  • 支持动态分析器

允许在运行时定义特定实体所使用的分析器。一个典型的用例是多语言支持,其中语言可能会从实体实例到另一个实例而变化。

索引

索引性能得到了提升,并添加了新的控制功能

新功能

  • 对大量手动索引的更好控制(flushToIndexes())
  • 支持词向量
  • 支持自定义相似度
  • 对索引写入的更好控制(RAM消耗、非复合文件格式标志等)
  • 对大型索引复制的更好支持

性能提升

  • 改进索引期间的竞争和锁窗口
  • 减少索引打开/关闭的次数
  • 按目录并行进行索引

查询

查询功能已添加新特性,性能也得到了提升。

新功能

  • 在查询时,暴露实体范围和命名的分析器以实现易于重复使用
  • 现在可以声明性地缓存过滤结果(DocIdSet)(默认)
  • 查询结果说明现在公开,以提供更好的调试信息

性能提升

  • 减少多实体搜索中的数据库往返次数
  • 在只包含单个实体类型的索引上的Lucene查询速度更快(通常是这种情况)
  • 投影属性的性能更好(与原始Lucene调用相比没有明显的开销)
  • 通过只读取文档的必要字段来减少Lucene的I/O消耗(在可能的情况下)
  • 减少文档读取(在分页和getResultSize()调用时)
  • 更快地重新打开索引(保持未更改的段打开)
  • 更好的索引读取并发性(使用只读标志)

  • 迁移到Lucene 2.4(及其性能改进)
  • 升级到Hibernate Core 3.3
  • 使用SLF4J作为日志外观

错误修复

  • 修复多核心机器上的几个竞争条件
  • SessionFactory.close()
  • 修复与嵌入式实体和@Indexed(HSEARCH-142)
  • 现在正确缓存过滤实例
  • 等等(请参阅变更日志)

下载

您可以从这里下载此版本。建议所有用户都迁移到这个版本(请参阅迁移指南)。

非常感谢所有为这个版本的开发和测试做出贡献的人。特别是,非常感谢Sanne和Hardy,他们在John和我完成Hibernate Search in Action的过程中不知疲倦地推动新特性和改进,并修复错误。

我们在3.1版本中无法包含一些功能,所以请保持关注。


返回顶部