我们在最近的项目中使用太阳黑子搜索。我们还使用设计并将我们的用户模型编入索引,如下所示:
searchable do
text :fname
text :lname
text :email
text :description
text :twitter_username
end
使用此设置,除非solr正在运行,否则用户甚至无法登录。这意味着在每次保存User模型时,都会与我们的solr服务器进行一些通信(重建索引?),即使可搜索的字段都没有更改。这是对的吗?
我们还有许多其他模型被太阳黑子索引,这些模型具有经常更新的不可搜索字段。似乎太阳黑子在所有这些更新中重新索引它们。
当可搜索字段发生变化时,是否可以将太阳黑子配置为仅与solr接口?
答案 0 :(得分:12)
我假设你有最新版本的太阳黑子宝石。
每次模型更改时,太阳黑子重新编制索引。要调整此行为(请参阅options for searchable):
可搜索:ignore_attribute_changes_of => [:average_rating,:permalink] do 文字:标题 端
查看源代码:https://github.com/outoftime/sunspot/blob/master/sunspot_rails/lib/sunspot/rails/searchable.rb
您的网站应该仍然有效,直到第一次要求solr:
全文搜索请求
索引请求
您可能每次用户登录时都会对用户模型进行更新,从而触发重新索引。
更多提示:
实际上,这不是索引需要花费很多时间,而是提交命令;默认情况下,在每个Web请求的末尾发出commit命令;这在生产环境中非常昂贵。我建议你change the policy到autocommit after X seconds;
如果你想要修补太阳黑子,以便你的网站在solr服务器故障的情况下工作,我建议你看一下这个gem,mock服务器接口为测试env:{{ 3}}