【问题标题】:Sunspot: How does the delta indexing work?太阳黑子:增量索引是如何工作的?
【发布时间】:2011-10-07 05:59:21
【问题描述】:

我正在研究 Sunspot 作为我们项目的一种可能的索引解决方案。有一件事,我没有找到任何信息:如何处理数据更新。如果我“设置”了我希望索引的类,solr 服务器如何收到有关对象更改的通知?

此外,请考虑以下场景:

我有“has_many”同义词的类艺术品,我会以这种方式构建我的索引:

Sunspot.setup(Artwork)
  text :synonyms do
    synonyms.map { |s| s.name }
  end
end

给定具有同义词“La Gioconda”和“Not so big smile”的艺术品“蒙娜丽莎”。当我现在更新最后一个同义词时,会通知 solr 并重建“蒙娜丽莎”的索引吗?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 search sunspot


    【解决方案1】:

    如果您使用 Sunspot::Rails 和 ActiveRecord 模型,则有一个生命周期挂钩,该挂钩将在保存模型时自动更新 Solr 中的记录数据。但是,上面看起来您使用的是纯 Sunspot,在这种情况下,您需要设置自己的生命周期挂钩,例如:

    after_save { |artwork| Sunspot.index(artwork) }
    

    对于更新依赖模型需要更新 Solr 中的父文档(例如,直接更新到上面的同义词模型)的任何情况,您还需要自己的生命周期逻辑。

    【讨论】:

    • 非常感谢..正是我想知道的!
    【解决方案2】:

    不,Solr 不存在这样的自动通知。由于同义词存储在 txt 文件中,因此您必须重新启动 solr 服务器,然后重新索引。任何 solr 配置的情况相同。

    【讨论】:

    • 你确定吗?我问是因为我读到了这个:vijedi.net/2010/…,它说:“Solr 服务器可以集群,并且由于它们管理索引,Sunspot 可以在模型对象更改时自动更新索引。无需运行 cron 作业来重新索引数据或设置增量索引,如 Thinking Sphinx。"
    • 更改模型时,不必手动重新索引。我说的是当 solr 本身的配置发生变化时重新索引,例如当您更改分析器或更改同义词等时。希望它清楚
    • 是的,我知道在这些情况下我必须进行完整的重新索引。但在我的(上面)场景中,我不更改配置,只更改数据。所以我想知道 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
    相关资源
    最近更新 更多