近日经过痛苦的升级过程终于把hibernatesearch升级到6了,又是一个完全不兼容的版本升级,不过在迁移过程中还是能感觉到新版本架构的合理与简介。在屏蔽lucene、elasticsearch两者差异的同时又暴露了一些深入调用两者自身组件的方法

analyzer放到了配置文件和配置类中,不再使用注解这种不太灵活的方式,注解看起来也不再那么乱;字段注解极大简化,常见的字段类型自动处理,不再需要各种Bridge

image.png

搜索逻辑的实现基本类似有一些简化

image.png

遗憾的是PublicCMS用到的搜索结果关键词高亮还是没有一个比较优雅的兼容性实现。

翻阅stackoverflow查找解决方案时,lucene推荐使用的是目前cms中使用的先获取lucene分析器,然后使用higtLighter对结果进行高亮替换原值的方式。

而elsaticsearch方式推荐的通过个性化适配增加请求参数,额外解析结果的方式因为代码实现过于复杂最终被遗弃。

image.png为了保持产品可伸缩的特性,我们还是坚持能让代码尽可能简单,切换搜索引擎也尽可能简单。

经过此次升级后,默认lucene版本已经从以前的5.5升级到现在的8.7。elasticsearch从以前的2.2-5.6 升级到5.6-7.10,而切换搜索引擎的步骤精简到只需要切换一行配置

升级后全文索引的位置和以前发生了变化

image.png

com.publiccms.entities.cms.CmsContent是旧的索引文件目录可以直接删除,新的索引文件CmsContent会是一个空的索引,需要在后台“站点->重建全文索引“菜单中重建才能使用

标签:elasticsearch

0条评论
发表评论