4

所以我已经使用 solr sunspot 几天了,并且因为它的一个问题而有点疯狂。我已经搜索了许多不同的网站来寻找答案,但很多人似乎有不同的想法。我试图弄清楚 sunspot 如何在自动索引开启的情况下管理不同环境中模型的索引/重新索引。这就是我得出的结论:

开发/产品:保存/更新对象会自动更新该对象在 solr 中的索引

测试:保存/更新对象不会自动更新索引,需要调用object.reindex!以使其生效。

控制台:与测试相同。需要重新索引才能正确更新 solr。

那么这看起来正确吗?无论是我的 solr 太阳黑子设置有什么问题,还是在这些不同的环境中无法正常工作,我都想死这么久。任何帮助将不胜感激!

4

2 回答 2

9

在 Solr 中更新文档后,您必须发出“提交”以告诉 Solr 将更改写入磁盘并让它们开始出现在搜索结果中。Sunspot::Rails 在 Rails 请求过程中会自动处理此问题,但除此之外(在测试中,从控制台),您需要明确地执行此操作。这是一个简单的Sunspot.commit.

于 2011-05-03T11:51:16.140 回答
1

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

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

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

于 2011-12-05T20:22:13.363 回答