【发布时间】:2013-08-22 16:51:55
【问题描述】:
我正在使用 sunspot 在我的狂欢商务应用程序中处理 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 选项会触发保存到数据库(在生产中我将使用 Solr 的 autoCommit 功能)。
所以,我有点卡住了。我不知道,太阳黑子挂在存档块的哪个位置,或者它在后台是 RSolr?也许有人可以帮我解决这个问题。
编辑
我刚刚看到,在使用 Sunspot 时,模型类会获得一些方法,例如 index 和 index!。奇怪的是,在控制台rails c 中,调用Spree::Product.first.methods 时会列出此方法。但是当我从产品控制器挂钩更新方法时,这个方法不存在。所以也许我在初始化太阳黑子的东西时遇到了一些问题。
仅供参考:上面的代码 (Spree::Product.class_eval do) 位于 config/initializers/sunspot/sunspot_product.rb 下的初始化程序中。
【问题讨论】:
-
您使用的是哪个版本的 Rails?
-
我使用的是 Ruby 1.9.3p392 和 Rails 3.2.9
-
没人知道吗?我不知道从哪里开始调试这个问题:(
-
@23tux 你是怎么解决这个问题的?
标签: ruby-on-rails solr spree sunspot