2

在 Sunspot Solr 中,我有一个模型Contact,我在 Solr 中建立索引。该Contact模型有很多属性,但我对其中两个进行了索引,:name并且:email. 为了防止每次Contact我们联系 Solr 中的字段发生更改时,我都会:ignore_attribute_changes_of在可搜索项上使用。

实际上,我只是想在更改:nameor时更新我的​​索引:email。我这样做:

fields = (Contact.attribute_names - ["name", "email"]).map{|o| o.to_sym}

searchable :ignore_attribute_changes_of => fields do
  text :name
  text :email
end

这对我来说似乎是错误的方式。有没有办法告诉 Sunspot searchable更新某些属性的变化?也就是说,是否存在ignore_attribute_changes_of这种方式的反面或者是否有原因?

4

1 回答 1

-2

我想,您可以禁用模型中的自动索引并以这种方式将索引操作移动到控制器

在模型中

searchable :auto_index => false do
  text :name
  text :email
end

在控制器中

def update
  ...
  if @contact.name_changed?||@contact.email_changed?
    Sunspot.index(@contact)
  end
end
于 2012-11-15T17:30:55.973 回答