Sunspot Solr:auto_index无法正常工作

问题描述 投票:0回答:2

我在大礼包商务应用程序中使用黑子来处理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时,模型类获得了indexindex!之类的方法。奇怪的是,在控制台rails c中调用Spree::Product.first.methods时会列出此方法。但是,当我从产品控制器中获取更新方法时,就没有这种方法了。所以也许在初始化黑子时我遇到了一些问题。

FYI:上方(Spree::Product.class_eval do)的代码在config/initializers/sunspot/sunspot_product.rb下的初始化程序内部。

ruby-on-rails solr spree sunspot
2个回答
0
投票

您应该使用solr_index和solr_index!控制器的方法。

solr_index api documentation


0
投票

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

您可以编辑solrconfig.xml并设置

autoSoftCommit

至您要编制索引的毫秒数。您可能不希望自己索引索引来重新发明整个轮子。

也请参阅此参考When should we apply Hard commit and Soft commit in SOLR?

© www.soinside.com 2019 - 2024. All rights reserved.