不同环境中的Solr sunspot

4

我最近使用Solr Sunspot几天了,但因为一个问题而感到有些疯狂。我查阅了许多不同的网站以寻找答案,但很多人似乎有不同的想法。我想弄清楚Sunspot如何在带自动索引的不同环境中管理模型的索引/重新索引。我总结如下:

Dev/Prod:保存/更新对象会自动更新Solr中该对象的索引

Test:保存/更新对象不会自动更新索引,需要调用object.reindex!才能生效。

Console:与测试相同。需要重新索引才能正确更新Solr。

这是否正确?长时间以来,这一点一直困扰着我,不知道我的Solr Sunspot设置有问题还是在这些不同的环境中它的工作方式不同。任何帮助都将不胜感激!

2个回答

9

在Solr中更新文档后,您必须发出“commit”命令,告诉Solr将更改写入磁盘并开始在搜索结果中显示。Sunspot :: Rails会在Rails请求过程中自动处理此操作,但在此之外(在测试中,从控制台中),您需要明确执行此操作。它很简单:Sunspot.commit


在许多情况下,您可以将Solr的autoCommit maxTime设置为30-60秒左右,然后忘记它。但是,如果您需要自动测试该更新(例如在测试环境中),那么是的,就像outoftime所说,需要发出手动提交。 - Nick Zadrozny

1

更新索引有三种主要方法:

  1. object.index:标记对象进行索引,但可能不会立即被索引
  2. object.index!:立即对对象进行索引
  3. Class.reindex: 立即索引模型上的所有对象

听起来你应该在控制台上使用.index!方法而不是.index方法。


我点赞了这个答案,因为我在其他地方找不到关于index的描述!你在哪里找到它的? - Blake Taylor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接