2012-07-18 45 views
1

我试图让我们的应用程序更具弹性,从我们的搜索服务器宕机。为了实现这一点,我试图禁用自动索引和删除,并手动在后台进程中执行它们。Sunspot_rails不尊重:auto_index和:auto_remove

我想

searchable :auto_index => false, :auto_remove => false do 
... 
end 

但还是接收到连接错误,每次我尝试保存或销毁记录的时间。

回溯显示错误来自solr可搜索文件,所以它定义为sunspot_rails导致问题。这是从摧毁的回溯片:

... 
rsolr (1.0.8) lib/rsolr/client.rb:67:in `update' 
rsolr (1.0.8) lib/rsolr/client.rb:121:in `delete_by_id' 
sunspot (1.3.3) lib/sunspot/indexer.rb:36:in `remove' 
sunspot (1.3.3) lib/sunspot/session.rb:137:in `block in remove' 
sunspot (1.3.3) lib/sunspot/session.rb:136:in `each' 
sunspot (1.3.3) lib/sunspot/session.rb:136:in `remove' 
sunspot (1.3.3) lib/sunspot/session_proxy/abstract_session_proxy.rb:11:in `remove' 
sunspot (1.3.3) lib/sunspot.rb:410:in `remove' 
sunspot_rails (1.3.3) lib/sunspot/rails/searchable.rb:390:in `solr_remove_from_index' 
sunspot_rails (1.3.3) lib/sunspot/rails/searchable.rb:93:in `block in searchable' 
... 

任何想法为什么选项来禁用这些挂钩不工作?任何想法如何实际禁用它们?

感谢

回答

1

找到了答案,以我自己的问题:

事实证明,虽然自动回调被禁用,我仍然使得它在不同的步脏。 sunspot_rails有一个清理步骤,在请求结束时运行,并尝试将所有脏记录提交到solr服务器。要禁用它,请将auto_commit_after_request: false添加到您的sunspot.yml

+0

感谢您的有用信息@Forrest – Cec 2016-03-21 09:27:51