报告 Reindex 销毁后花费的时间太长

Report Reindex taking too long after destroy

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

after_destroy { ProductsReport.reindex; Sunspot.commit }

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

顺便说一句,我的系统是在 Rails 上 Ruby 构建的。 提前致谢。

您很可能能够优化此操作,但具体操作方法取决于您的数据模型和 Solr 设置。我还质疑每次删除是否需要完整的重建索引。能不能把删除记录的solr文件直接删除?

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

之前的答案是正确的 - 而不是重新索引,您应该只从 Solr 中删除有问题的文档,如果只有一个文档有,则不需要重新索引所有文档改变了。

在 Sunspot 中你可以做到这一点 with Sunspot.remove(Doc)