我在我的狂欢商务应用程序中使用太阳黑子来处理 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
选项会触发保存到数据库(在生产中我将使用autoCommit
Solr 的功能)。
所以,我有点卡住了。我不知道,太阳黑子挂在存档块的哪个位置,或者它在后台是 RSolr?也许有人可以帮我解决这个问题。
编辑
我刚刚看到,在使用 Sunspot 时,模型类会获得一些方法,例如index
和index!
。奇怪的是,在控制台内部rails c
调用Spree::Product.first.methods
. 但是当我从产品控制器挂钩更新方法时,这个方法不存在。所以也许我在初始化太阳黑子的东西时遇到了一些问题。
仅供参考:上面 ( Spree::Product.class_eval do
) 中的代码位于config/initializers/sunspot/sunspot_product.rb
.