我正在尝试利用Lucene在我的应用程序中开发全文搜索,这需要根据我的mysql数据库构建索引。我想知道如何保持这些索引与db同步? 我提出了方法: 1)紧密添加业务逻辑中的额外代码以更新搜索索引。 2)运行分离的任务以定期重建索引。
你有其他方法吗?你认为最好的方法是什么? 任何评论都会很感激,提前谢谢!答案 0 :(得分:2)
如果您使用Hibernate,请查看Hibernate search项目。它应该涵盖很多样板。
答案 1 :(得分:1)
您可以使用提供JDBC river plugin的弹性搜索,或使用events on your Entities via JPA手动触发更新。
答案 2 :(得分:0)
您可以在MySQL中设置触发器,以更新所有已插入/更新/删除的文档的更改文档。
此外,您可以在应用程序中设置Filter(javax.servlet规范)来拦截服务器请求并在它们到达数据库之前将它们推送到您的索引(它甚至可以在同一个事务中完成,但很少有真正的需要的是,最终的一致性通常适用于搜索引擎)。
正如您所说,您可以安排定期更新(类似于我在Solr中为DIH做出的贡献)。