最近项目中选择了hibernate search 做全文检索。
选型的主要原因是:自动更新索你是用原生lucene,个人觉得需要去考虑索引的更新同步问题。比如新增记录时,新增索引,修改时更新索引。
使用中遇到了几个问题:
1、框架使用了dorado hibernate后,自动更新索引失败!原因是dorado 拿到的实体是代理过的。解决的方法是修改源码,一种方案是在fullTextEventListener里面对传进来的entity处理,获取原型的entity(该方法尝试失败,原因是找不到拿原型entity 的方法);第二种方案比较不好,直接修改hibernate search处理实体类型的代码,具体方式后面补上(手机写的,不大方便)
2、高亮显示。这个有个很大的坑。当你把匹配到的数据做高亮时,比如加上color =red ,这个时候那会发现数据库相应的字段给持久化了。数据被覆盖成高亮内容。解决方法有1、克隆一个实体,该实体不复杂时推荐使用方法因为克隆消耗性能;另一方法是,使用vo