sunspot:reindexのeager loading
Sunspotを使っているとき、Solrのインデックスの再構築をするにはrakeタスクのsunspot:reindexを使う。
ここでsearchable
にしているモデル群に親子関係があり、インデックスにも親なり子なり孫なりの値を引いてきているならばeager loadingさせることで再構築にかかる時間を短くできる、かもしれない。個々のインデックス処理にもよるので一概には言えないが。
sunspot:reindexおよびその内部で呼び出されているsearchable
なモデルのクラスメソッドsolr_index
は、searcable
の引数に渡されたハッシュのうち:include
にあたるものをeager loadingのために使う。
class Post < ActiveRecord::Base
...
searchable(include: [:comments]) do
...
end
...
end
このようにしておくと、その内部で次のような形でfind_in_batches
を呼び出してレコードの処理を行う。
find_in_batches(include: [:comments], ...) do |records|
...
end
(Sunspot 2.0.0で確認。)