2011-12-30 3 views
18

私のアプリケーションは、通常、全体として再インデックスするのに20分かかります。私は再度インデックスを作成したいいくつかのレコードを持つ小さなテーブルがあります。私は時間を節約したいので、コマンドrake sunspot:solr:reindex[500,Deal]を実行しました。これはGithub readmeから直接取得され、1つのモデルのみを再索引付けすることを想定しています。Sunspotで特定のモデルを再インデックスすると、時間の差はありません。

このコマンドで再インデックスするまでに要する時間はまだ20分ですので、時間に差はありません。私は何か間違っているのですか?

答えて

30

私がしていましたなぜ同じ時間がかかるのかと尋ねるのと同じ状況です。

解決策: ":solr"を消去してください。ただ、書き込み:

rake sunspot:reindex[batch_size,Model] 

をあなたのようなあなたはTU「は、」カンマを入れているBATCH_SIZE指定しない場合:インデックスの再作成のためのrakeタスクはややナイーブである

rake sunspot:reindex[,model] 
+1

この作品と感謝!しかし、回答者は、以下のIRBソリューションがより高速になることに留意してください。 – lulalala

+6

私はzshell 'rake sunspot:reindex \ [、model \]'で角括弧を引用する必要がありました。 – iltempo

26

私は今、Railsのコンソールにアクセスし、そこからREINDEXを呼び出す:私は今、唯一のモデルのインデックスを再作成することができますよう

Deal.solr_reindex(:batch_size => 1000, :include => :period) 

は、これは素晴らしい作品、速度を向上させるために、関連するテーブルが含まれています。以前は200 /秒で索引付けされていましたが、今は1000 /秒です。

(実際には、空のインデックスの短い期間で、その結果、インデックスファイルがクリアされますコンソールまたはレーキを通じてインデックスの再作成するので、私は今、インデックスを更新する時間のsolr_indexほとんどを呼び出す。)

+2

を。ここでのボトルネックはデータベースへのN + 1問合せであり、コンソールに ':include'を使用するとrakeタスクで発生するオーバーヘッドが大幅に削減されます。 –

+2

このソリューションに少し追加: 含まれているモデルは、小文字で記述する必要があり、単数または複数の関係の種類によって異なります。 –

関連する問題