質問

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

>> 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'
役に立ちましたか?

解決

多分これが痛みの一部を和らげるだろう?

#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

他のヒント

これは私の最初の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 分で十分ですが、これは自分でテストする必要があります。

お役に立てれば!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top