0

したがって、毎朝サーバーを起動するには、次のタスクを実行する必要があります..

>> sunspot-solr stop
>> sunspot-solr start
>> script/console
>> Organization.reindex
>> Event.reindex
>> Deal.reindex
>> exit
>> script/server

~/.profile にエイリアスとしてショートカットを作成して、毎日入力せずにこれらすべてを実行する方法はありますか?

このように動作しませんか?

alias blam='cur && sunspot-solr stop && sunspot-solr start && script/console && Organization.reindex && Event.reindex && Deal.reindex && exit && script/server'
4

2 に答える 2

1

これは私の最初の StackOverflow 投稿であり、古い質問ですが、何らかの形で貢献できると感じました :D Solr インデックスを定期的に再構築することは非常にコストのかかる作業です。本番環境でこのようなことを行うことは避けるべきです! あなたが探しているものは、次の 3 つの方法で最もよく達成できます。

1 - sunspot.yml を編集して次の行を追加します

auto_commit_after_request = true

これにより、新しいモデル エントリが保存 (または削除) されるたびにインデックスを更新するように sunspot に指示しますこれにより、インデックスが最新の状態に保たれますが、コストがかかる可能性があります。

2 - このように rake タスクを作成します (DelayedJob ワーカーで cron をオンにして実行できます)。

task :update_index => :environment do
Sunspot.commit_if_dirty
end

これは、モデルの更新ごとにコミットを行うよりもはるかにコストがかかりませんが、これにより、インデックスに結果整合性の問題が発生することに注意してください。これは、追加には問題ありませんが、削除には厄介な問題になる可能性があります。インデックスに孤立したエントリが生成されます。 . これは、この問題を解決する 3 番目の方法の問題でもあります ->

3 - solrconfig.xml ファイルを編集し、コミット間の任意の間隔でautoCommit機能を設定します (時間をミリ秒単位で使用することを忘れないでください)。maxTimeほとんどのアプリケーションでは 5 分で十分ですが、これは自分でテストする必要があります。

お役に立てれば!

于 2011-02-26T15:57:11.320 に答える
1

これで少しは痛みが和らぐのではないでしょうか?

#Rakefile
desc "Reindex the organizations, events, and deals Solr indexes."
task :reindex => :environment do
  Organization.reindex
  Event.reindex
  Deal.reindex
end

それから毎朝ランニング

> sunspot-solr stop
> sunspot-solr start
> rake reindex
> script/server
于 2010-08-05T13:34:23.677 に答える