报告Reindex在毁灭后耗时太久

时间:2017-10-19 12:54:46

标签: mysql ruby-on-rails solr report sunspot-solr

我有一份产品报告,列出了所有已注册的产品。 当我从de product list销毁(删除)其中一个项目时,我需要从报告列表中删除该项目。 我确实使用Sunspot Solr和Mysql。 我尝试了以下方式:

after_destroy { ProductsReport.reindex; Sunspot.commit }

但由于我庞大的产品清单,执行时间太长。 这是一种简单或更有效的方法吗?

顺便说一下,我的系统是用Ruby on Rails构建的。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可以很好地优化此操作,但有关如何操作的详细信息取决于您的数据模型和Solr设置。我还质疑每次删除是否需要完整的重新索引。你能删除已删除记录的Solr文件吗?

无论如何,我建议使用排队服务异步更新搜索群集。 Rails应用程序的热门选项包括DelayedJobResque

答案 1 :(得分:0)

上一个答案是正确的 - 您应该只从Solr中删除有问题的文档,而不是重新索引,如果只有一个文档发生了更改,则无需重新索引所有文档

在太阳黑子中,您可以执行此操作with Sunspot.remove(Doc)