如何使Lucene索引与Mysql数据库保持同步?

我正在尝试利用Lucene在我的应用程序中开发全文搜索,这需要根据我的mysql数据库构建索引。 我想知道如何保持这些索引与db同步? 我提出了以下方法:1)紧密添加业务逻辑中的额外代码以更新搜索索引。 2)运行分离的任务以定期重建索引。

你有其他方法吗? 你认为最好的方法是什么? 任何评论都会很感激,谢谢!

如果您使用Hibernate,请查看Hibernate搜索项目。 它应该涵盖很多样板。

您可以使用Elastic Search提供和使用JDBC 河流 插件,或使用JPA上的实体上的事件手动触发更新。

您可以在MySQL中设置触发器以更新所有插入/更新/删除的文档的已更改文档。

此外,您可以在应用程序中设置一个Filter(javax.servlet规范)来拦截服务器请求并在它们甚至到达数据库之前将它们推送到您的索引(它甚至可以在同一个事务中完成,但实际上很少需要它最终的一致性通常适用于搜索引擎)。

正如您所说,您可以安排定期更新(类似于我在Solr中为DIH做出的贡献)。