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

也许这会减轻一些痛苦?

#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 回答
1

这是我的第一篇 StackOverflow 帖子,这是一个老问题,但我觉得我可以以某种方式做出贡献:D 定期重建 Solr 索引是一项非常昂贵的任务,你应该避免在生产中做这样的事情!您正在寻找的东西可以通过三种方式最好地实现:

1 - 编辑你 sunspot.yml 并添加该行

auto_commit_after_request = true

这将告诉 sunspot每次保存(或删除)新模型条目时更新索引。这将使您的索引保持更新,但可能会很昂贵。

2 - 像这样创建一个 rake 任务(可以在 DelayedJob 工作者中使用 cron 运行)

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

这比在每次模型更新后进行提交要便宜得多,但请记住,这会给您的索引带来最终一致性的问题,这对于添加来说很好,但对于删除来说可能很糟糕:它会在您的索引中生成孤立条目. 这也是解决这个问题的第三种方法的问题->

3 - 编辑您的 solrconfig.xml 文件并在提交之间设置任意间隔的autoCommit功能maxTime(请记住以毫秒为单位使用时间)。对于大多数应用程序来说,5 分钟会很好,但你应该自己测试一下。

希望这可以帮助!

于 2011-02-26T15:57:11.320 回答