我有一份产品报告,列出了所有已注册的产品。 当我从de product list销毁(删除)其中一个项目时,我需要从报告列表中删除该项目。 我确实使用Sunspot Solr和Mysql。 我尝试了以下方式:
after_destroy { ProductsReport.reindex; Sunspot.commit }
但由于我庞大的产品清单,执行时间太长。 这是一种简单或更有效的方法吗?
顺便说一下,我的系统是用Ruby on Rails构建的。 提前谢谢。
答案 0 :(得分:1)
您可以很好地优化此操作,但有关如何操作的详细信息取决于您的数据模型和Solr设置。我还质疑每次删除是否需要完整的重新索引。你能删除已删除记录的Solr文件吗?
无论如何,我建议使用排队服务异步更新搜索群集。 Rails应用程序的热门选项包括DelayedJob和Resque。
答案 1 :(得分:0)
上一个答案是正确的 - 您应该只从Solr中删除有问题的文档,而不是重新索引,如果只有一个文档发生了更改,则无需重新索引所有文档。
在太阳黑子中,您可以执行此操作with Sunspot.remove(Doc)
。