题
所以每天早上启动我的服务器,我需要做下面的任务..
>> 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的指数周期性是非常昂贵的任务,你应该避免这样搞生产!你正在寻找可以通过三种方式能最好地实现:
1 - 编辑你sunspot.yml并添加行
auto_commit_after_request = true
这会告诉黑子更新索引的每次强>一个新的模型条目被保存(或删除)。这将让你的索引更新,但可以是昂贵的。
2 - 创建一个rake任务(可使用Cron上在DelayedJob工人运行)这样
task :update_index => :environment do
Sunspot.commit_if_dirty
end
这是不是在做每一个模型更新后提交便宜得多,但要记住,这个人介绍给你的指标,这是很好的补充,但可以删除是很讨厌最终一致性的问题:它会产生孤立项在你的指数。这也是与第三方式有问题来解决这个问题 - >
3 - 编辑您的solrconfig.xml中文件并设置autoCommit
特征与maxTime
提交之间的任意的间隔(记住以毫秒为单位使用次)。 5分钟将是大多数应用程序很好,但你要测试这个自己。
希望这有助于!
不隶属于 StackOverflow