首页新闻找找看学习计划

求Lucene索引文件和数据库的数据同步方案

0
悬赏园豆:30 [已解决问题] 解决于 2017-06-28 23:36

    目前我们项目中方案是通过索引任务表来保存数据的变动,后台开启一个线程专门负责创建索引文件的操作。设置隔一段时间执行线程,查询索引任务表,如有新数据就执行索引操作。

    现在项目要求要达到的效果是在数据库更新的时候直接通知索引服务来更新这些数据(不通过触发器)。现在我的想法是通过数据库订阅实现,不知可行不?

    求个方案,有相关案例最好。

   

      

    

_weiz的主页 _weiz | 初学一级 | 园豆:89
提问于:2014-10-22 12:20
< >
分享
最佳答案
0

之前做过一个大体的原理是这样的

一部分索引持久化,一部分放到RAMDirectory中,对于动态的数据不写入到硬盘上,先提交到RAMDirectory中,搜索的时候合并持久化的索引和RAMDirectory的索引,修改过的数据从合并数据排除,定时的清理RAMDirectory到持久化的索引中去,这样就可以方便快捷 并且无延迟的实现搜索。

具体的代码见http://www.cnblogs.com/rsync/p/3370115.html

收获园豆:30
````` | 专家六级 |园豆:14268 | 2014-10-22 12:50

赞同!!

喵喵喵猫 | 园豆:1742 (小虾三级) | 2014-10-22 14:39

你这个方法不错,但项目要求由数据库通知程序变更索引文件

_weiz | 园豆:89 (初学一级) | 2014-10-22 15:45

@_weiz: 那就设置个触发器为更新最后一次更新时间,如果修改自动触发。

这个需求有点操蛋。特别是用lucence.

不过如果这样的需求,可以考虑使用sphinx,直接对数据库的全文搜索,会方便很多。

````` | 园豆:14268 (专家六级) | 2014-10-22 17:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册