1

我在我的狂欢商务应用程序中使用太阳黑子来处理 solr。我已经为我的产品模型定义了它:

Spree::Product.class_eval do
  searchable :auto_index => true, :auto_remove => true do
  ...
  end
end

在索引时,一切都进入 Solr 并且工作正常。但是当我尝试编辑产品时,更改不会保存到 Solr。例如,testtest在产品标题中添加一个独特的词,然后搜索该关键字不会返回任何内容。当我重新索引整个数据库时,它可以工作。

在里面sunspot.yml我正在使用该auto_commit_after_request: true选项。

我跟踪了log/sunspot-solr-development.log每个搜索记录的位置。但似乎编辑产品并没有调用 Solr。我认为使用该:auto_index => true选项会触发保存到数据库(在生产中我将使用autoCommitSolr 的功能)。

所以,我有点卡住了。我不知道,太阳黑子挂在存档块的哪个位置,或者它在后台是 RSolr?也许有人可以帮我解决这个问题。

编辑

我刚刚看到,在使用 Sunspot 时,模型类会获得一些方法,例如indexindex!。奇怪的是,在控制台内部rails c调用Spree::Product.first.methods. 但是当我从产品控制器挂钩更新方法时,这个方法不存在。所以也许我在初始化太阳黑子的东西时遇到了一些问题。

仅供参考:上面 ( Spree::Product.class_eval do) 中的代码位于config/initializers/sunspot/sunspot_product.rb.

4

2 回答 2

0

你应该使用 solr_index 和 solr_index!来自控制器的方法。

solr_index api 文档

于 2013-11-29T09:47:49.547 回答
0

多年过去了,我想为这个问题提供另一种选择。

您可以编辑solrconfig.xml并设置

自动提交

到您要索引的任何毫秒。您可能不想通过自己索引记录来重新发明整个轮子。

也看看这个参考 我们什么时候应该在 SOLR 中应用硬提交和软提交?

于 2019-11-01T23:18:53.253 回答