【问题标题】:Sunspot Solr: auto_index not working太阳黑子 Solr:auto_index 不工作
【发布时间】: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 时,模型类会获得一些方法,例如 indexindex!。奇怪的是,在控制台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


【解决方案1】:

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

solr_index api documentation

【讨论】:

    【解决方案2】:

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

    您可以编辑 solrconfig.xml 并设置

    autoSoftCommit

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

    也看看这个参考 When should we apply Hard commit and Soft commit in SOLR?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多