在过去几个月里,我们一直在努力升级 Hibernate Search,以便使用 Apache Lucene 5
,以跟上 Lucene 社区的最新发布。
今天,Hibernate Search 5.5.0.Alpha1
已发布!
正如版本号所示,这是第一个版本,但我们也需要您的反馈和建议,以便更好地评估将此版本发展成为优秀、高效和稳定的最终版本所需的步骤。
稳定的 API
正如 Lucene 社区的一位杰出开发者 Uwe Schindler 建议我尝试的那样,结果表明,在 Hibernate Search 的次要升级中,可以从 Apache Lucene 版本 4 升级到 5(重大升级):许多事情得到了改进,一些事情略有不同,但总体而言,API 没有受到任何重大变化的影响。
如果您为 Hibernate Search 编写了强大的使用扩展,可能会受到一些 Lucene API 的细微变化的影响,在这种情况下
-
与我们联系,并告知我们!
如果升级过程中存在困难,请告知我们:我们可以尝试改进这一点,或者至少改进迁移指南。如果您不告诉我们,我们可能不知道,这会让许多其他开发者感到困难!
改进的性能
Apache Lucene 代码中的一些更改与效率提升有关,尤其是在内存使用方面。
然而,我们这次发布的目的是功能和正确性;我们没有时间进行性能测试,而且坦白地说,即使我们有时间,也没有什么能比得上来自用户社区的反馈。
我们非常感谢您的帮助,尝试使用它并运行一些性能测试,尤其是如果您能够与Hibernate Search(基于更早版本的Apache Lucene)的旧版本进行比较。
如果您认为可以尝试这项功能,这将是一个独一无二的贡献机会,同时我们也会为您提供分析和理解性能报告的见解和支持!
排序和分面:使用正确的类型!
似乎在使用Apache Lucene 4时,如果您运行了一个数值分面查询,但目标字段不是数值类型,它仍然可以工作——或者看起来可以工作。
同样,如果您使用错误的SortType对查询进行排序,Apache Lucene 4似乎很宽容。
现在使用Apache Lucene 5,并且由于我们需要进行一些内部更改以简化您的迁移成本,对正确类型的验证变得更加严格。
请注意,如果您匹配类型错误,您将获得以下运行时异常:
Type mismatch: ageForIntSorting was indexed with multiple values per document, use SORTED_SET instead
我知道这些可能令人困惑,因此我们正在努力改进错误信息:[HSEARCH-1951](https://hibernate.atlassian.net/browse/HSEARCH-1951);即使有这些错误信息,意义是您需要修复您的映射。这不是什么丢脸的事情,我们通过几个单元测试发现这个问题太宽松了;-)