2012-10-24 27 views
1

太陽黑子的Solr我有一個模型Contact我指數Solr的。該Contact模型有很多屬性,但我索引他們兩個,:name:email。爲了避免每一個領域的Contact改變時,我們聯繫Solr的,我對搜索的使用:ignore_attribute_changes_of逆ignore_attribute_changes_of的

其實,我只想當我改變:name:email來更新我的索引。我這樣做:

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

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

這似乎是錯誤的方式對我來說。有沒有辦法告訴黑子搜索到更新某些屬性的變化?也就是說,是否有與ignore_attribute_changes_of相反的結論呢?還是有這樣的理由嗎?

+0

我想他們只是沒我沒想過。你爲什麼不嘗試在https://github.com/sunspot/sunspot上打開一個問題,看看他們說什麼? – mdesantis

回答

-1

我想,你可以在模型中禁用自動索引和移動索引行動以這種方式控制器

模型

searchable :auto_index => false do 
    text :name 
    text :email 
end 
在控制器

def update 
    ... 
    if @contact.name_changed?||@contact.email_changed? 
    Sunspot.index(@contact) 
    end 
end 
+0

甚至你可以嘗試使用':auto_index => check_if_name_or_email_changed'而不是':auto_index => false' 'def check_if_name_or_email_changed name_changed?|| email_changed? end' 但是這種解決方案我沒有檢查 – okliv