New*_*ewy 17 solr ruby-on-rails sunspot sunspot-rails
我有一个模型,它部署一个延迟的作业,更新它的一些属性.该模型被宣布为"可搜索"......
searchable do
text :content, :stored => true
end
Run Code Online (Sandbox Code Playgroud)
...我认为在保存后会重新索引.在测试中,似乎并非如此.如果我运行:rake sunspot:reindex,那么一切都按预期工作.可能导致此问题的原因是什么?
Nic*_*zny 20
正如杰森所提到的,您可以打电话Sunspot.commit_if_dirty给您的客户发出提交.
从服务器配置方面,另一种方法是将autoCommit属性设置为在solrconfig.xml对索引进行更改时自动发出提交.一个maxTime60000毫秒(1分),应该能满足大多数网站.
使用autoCommit可能是生产应用程序中更明智的选择,其中大量提交很容易影响Solr服务器的性能.事实上,它与太阳黑子一个很好的做法,禁止其auto_commit_after_request option当你的网站开始得到更新,像样的数目.
最后,autoCommit具有能够设置并忘记它的优点.
在Websolr,我们的默认设置是忽略客户端发布的提交autoCommit.
索引仅反映Sunspot.commit调用后的更改.运行时会自动发生这种情况rake sunspot:reindex.
Sunspot的Rails插件还有一个auto_commit_after_request配置选项,可以Sunspot.commit_if_dirty在每次请求后调用,但这不会被后台进程触发.
你最好的选择是Sunspot.commit_if_dirty在延迟工作中作为最后一件事来打电话.
我遇到了与你完全相同的问题 - 当我测试我的搜索功能时,太阳黑子将永远不会向solr发出提交.如果我手动调用Sunspot.com,一切正常.我摆弄了auto_commit_after_request,但默认情况下这是真的,所以它不应该有所不同.
因此,经过一些调查后,我发现Sunspot不会自动发出提交,除非在Web请求的上下文中进行更改.如果您正在从测试或后台作业进行更改,则必须手动调用Sunspot.commit.
| 归档时间: |
|
| 查看次数: |
6138 次 |
| 最近记录: |