Sta*_*ley 10 solr ruby-on-rails sunspot
我们使用Sunspot Solr在我们的Ruby on Rails应用程序中进行索引和搜索.
我们想重新索引一些对象,有人不小心从Rails控制台运行了Product.reindex命令.结果是所有产品的索引从头开始,我们的目录在索引进行时显得空白.
由于我们有大量的数据,因此到目前为止已经进行了三天的重新索引.今天早上,当我检查重建索引的进度时,似乎有一个损坏的数据输入导致重建索引停止而没有完成.
我不能再次重新启动整个Product.reindex操作,因为它需要太长时间.有没有办法只对所选产品进行重建索引?我想选择一系列未编制索引的产品,然后在这个上运行索引.如何在不必运行整个数据集的完整重建索引的情况下将单个产品添加到索引中?
s01*_*ist 14
Sunspot会对保存回调中的对象进行索引,因此您可以保存每个对象,但也可能会触发其他回调.更精确的方法是
Sunspot.index [post1, post2]
Sunspot.commit
Run Code Online (Sandbox Code Playgroud)
或者自动提交
Sunspot.index! [post1, post2]
Run Code Online (Sandbox Code Playgroud)
您甚至可以传递对象关系,因为它们也只是一个数组
Sunspot.index! post1.comments
Run Code Online (Sandbox Code Playgroud)
我在https://github.com/sunspot/sunspot#reindexing-objects上找到了答案
无论何时保存对象,它都会自动重新编制索引,作为保存回调的一部分.因此,所需要的只是将需要重新索引的所有对象添加到数组中,然后遍历数组,在每个对象上调用save.这成功更新了索引中的所需对象.
| 归档时间: |
|
| 查看次数: |
7080 次 |
| 最近记录: |