将Lucene存储库与源数据同步的最佳实践?

时间:2011-11-22 20:28:57

标签: lucene lucene.net

我正在设计一个很大程度上依赖于使用Lucene.NET存储库进行搜索的应用程序。将使用来自不断变化的操作数据库的数据构建存储库。我试图找出保持Lucene存储库与源数据库同步的最佳策略。我是否应该每隔几分钟运行一次服务,查询数据库以获取更新的记录,并从Lucene索引中添加/删除?我应该每晚重建Lucene存储库并容忍数据中的延迟吗?

将数据保存在Lucene存储库中的最佳做法是什么?不同的策略如何影响延迟,性能等?

1 个答案:

答案 0 :(得分:3)

Lucene能够执行所谓的近实时搜索,这意味着几乎可以立即在查询结果中看到索引的更新。因此,您可以在将更新保存到数据库后自由发送更新 - Lucene在处理甚至非常频繁的更新时应该没有问题,例如Twitter搜索是用它构建的(当然,为了维持这么大的负载,你需要分发你的索引。)

因此,最好在发布事务后触发的某些代码中发送更新。在不知道您使用的是什么数据库或排队系统的情况下,很难说更具体的内容。关于此问题的一些一般性想法,以及与CouchDB或RabbitMQ一起使用的示例都显示在elasticsearch river documentation中。