1

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

此外,请考虑以下场景:

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

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

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

4

2 回答 2

2

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

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

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

于 2011-07-19T11:43:06.040 回答
0

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

于 2011-07-18T03:54:24.287 回答