2015-11-14 173 views
0

我正在使用Sunspot這是我的Rails應用上的Solr-based search engine自動重新索引編輯上的太陽黑子/ Solr

根據this Rails Cast episode on Search with Sunspot:

太陽黑子指標自動任何新的記錄,但不存在的。我們可以告訴太陽黑子通過運行重新索引現有記錄:rake sunspot:reindex

基本上應該重建整個模型的索引。

不過,我有一個模型(TicketSubject),有一個屬性,category,我會喜歡上有其category編輯一個ticket_subject每次重新索引。

我該怎麼辦?

回答

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

+0

感謝您的回答,我也在那一行中思考,但是,將會運行什麼'sunspost'命令來重新索引已更改的特定對象而不是整個記錄? –

+0

對象是記錄。比如說,當一個TicketSubject的category屬性被編輯並保存時,相應的記錄也必須在DB中更新。所以你不能避免記錄沒有完全更新的情況。我不是在談論整個表格,只是特定的記錄 –

+0

是的:-)。我們在這裏說的是同樣的東西......只是措辭的不同選擇。什麼是'sunspot'命令重新索引這個記錄(只有這個對象,''只有這個ticket_subject')而不是重新索引整個表? –