昨晚我们发布了Hibernate Search 5.2.0.Beta1,根据许多用户的要求,我们实现了多租户支持。
多租户
这个功能从Hibernate ORM的一些时间点就已经可用,但Hibernate Search虽然不会阻止你使用它,但不会对全文查询应用相同的严格隔离。现在这一切都已经实现,并且使用起来非常简单超级简单。
如何使用它
这与Hibernate ORM的多租户使用方式没有区别。在你打开一个租户感知的'Session'之后,更改将自动标记为属于特定租户。当你执行全文查询时,你将只获得当前租户的结果。当使用MassIndexer重建索引时,它将只重建当前租户的索引。当你执行《q》purgeAll《q》操作时,它将只删除属于当前租户的条目。
实现和分片考虑
在这个实现中,如一些人所建议的,我们没有为每个租户创建一个完全独立的索引,但索引中的每个文档都通过《q》标记《q》了租户id。
我想知道是否也应该实现一种变体,即将每个租户的数据存储在一个完全独立的索引中:请告诉我们您的看法。如果租户数量非常多,当前的单索引方法效果更好,因为可管理的索引数量有限。当前方法的另一个优点是,您可以轻松地集成一个巧妙的自定义分片实现;通过在租户列表中采用取模方法,您可以在不必要有与租户数量一样多的索引的情况下,对其进行合理的分离。
多态实体加载数据的性能
这个月的性能改进亮点在于对我们在加载多态结果时使用的内部条件策略进行了重新审视。如果您从非平凡的类层次结构中加载全文结果,您可能会注意到性能的提升。更多详情请参见 HSEARCH-1793。
MassIndexer 现在支持取消操作
MassIndexer 的异步变体返回一个 Future,但尚未实现取消操作。非常感谢 Yoann Gendre 实现了这个功能!
其他改进
有关改进的详细信息,请参阅 变更日志。
获取更新!
您所需的一切都可以在 Hibernate Search 的 网站 上找到。从这里下载完整的发行版 [下载链接],或从 Maven Central 获取,并且请不要犹豫,在 论坛 上联系我们。