2

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

你还有其他方法吗?你认为最好的方法是什么?任何意见将不胜感激,在此先感谢!

4

3 回答 3

2

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

于 2012-09-03T09:37:08.943 回答
1

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

于 2014-12-04T17:00:54.337 回答
0

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

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

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

于 2012-08-23T10:01:58.663 回答