我在我的狂欢商务应用程序中使用太阳黑子来处理 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 时,模型类会获得一些方法,例如index和index!。奇怪的是,在控制台内部rails c调用Spree::Product.first.methods. 但是当我从产品控制器挂钩更新方法时,这个方法不存在。所以也许我在初始化太阳黑子的东西时遇到了一些问题。
仅供参考:上面 ( Spree::Product.class_eval do) 中的代码位于config/initializers/sunspot/sunspot_product.rb.