【问题标题】:Automatically re-indexing Sunspot/Solr on edit在编辑时自动重新索引太阳黑子/Solr
【发布时间】:2015-11-14 05:11:25
【问题描述】:

我正在使用 Sunspot,这是我的 rails 应用程序上的 Solr-based search engine

根据this Rails Cast episode on Search with Sunspot:

Sunspot 自动为所有新记录编制索引,但不为现有记录编制索引。我们可以告诉 Sunspot 重新索引现有记录,方法是:rake sunspot:reindex

这基本上应该重新索引整个模型。

但是,我有一个模型 (TicketSubject),其属性为 category,我想在每次对其 category 进行编辑时重新索引 ticket_subject

我该怎么办?

【问题讨论】:

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


    【解决方案1】:

    为什么不为此使用 ActiveRecord 回调,即after_update

    after_update() 在具有记录的现有对象的 Base.save 之后调用。请注意,此回调仍然包含在围绕保存的事务中。例如,如果您此时调用外部索引器,它将看不到数据库中的更改。 http://api.rubyonrails.org/v2.3.8/classes/ActiveRecord/Callbacks.html#M001377

    定义:回调是 Active Record 对象生命周期的挂钩,允许您在更改对象状态之前或之后触发逻辑http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

    【讨论】:

    • 感谢您的回答,我也在考虑这一行,但是,sunspost 命令将运行以仅重新索引已更改的特定对象而不是整个记录?
    • 对象是记录。比如说,当 TicketSubject 的类别属性被编辑和保存时,相应的记录也必须在数据库中更新。所以你无法避免记录没有完全更新的情况。我说的不是整张桌子,只是那条特定的记录
    • 是的:-)。我们在这里说的是同一件事……只是措辞不同。什么是sunspot 命令只重新索引这条记录(只重新索引这个对象,only this ticket_subject)而不是重新索引整个表?
    • 太棒了!希望一切顺利
    猜你喜欢
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-29
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多