2011-07-17 79 views
1

我正在調查太陽黑子作爲我們項目的可能索引解決方案。有一件事,我沒有找到任何有關信息:如何處理數據的更新。如果我有「設置」我想索引的類,solr服務器如何得到有關對象更改的通知?太陽黑子:三角洲索引如何工作?

此外,考慮以下情形:

我有類藝術品其中「的has_many」的同義詞,我會建造我的指標是這樣的:

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

鑑於該藝術家的作品「蒙娜麗莎」與同義詞「La Gioconda」和「不那麼大的微笑」。當我現在更新最後一個同義詞時,是否會通知solr並重建「Mona Lisa」索引?

回答

2

如果您使用的是Sunspot :: Rails和ActiveRecord模型,則會有一個生命週期鉤子,它會在保存模型時自動更新Solr中的記錄數據。然而上述看起來像你使用純太陽黑子,在這種情況下,你需要建立自己的生命週期掛鉤,例如:

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

您還需要你自己的生命週期邏輯,任何情況下,在更新依賴模型需要更新Solr中的父文檔(例如,直接更新上面的同義詞模型)。

+0

非常感謝..正是我想知道的! – moritz

0

不,Solr沒有這樣的自動通知。由於同義詞存儲在txt文件中,您必須重新啓動solr服務器,然後重新索引。與任何solr配置相同的情況。

+0

你確定嗎?我問,因爲我讀了這個:http://www.vijedi.net/2010/ruby-full-text-search-performance-thinking-sphinx-vs-sunspot-solr/它說:「Solr服務器可以羣集和因爲他們管理索引,所以當模型對象發生變化時,Sunspot可以自動更新索引。不需要像Thinking Sphinx那樣運行cron作業來重新索引數據或設置增量索引。「 – moritz

+0

當你改變模型時,你不必手動重新索引。我在談論重新索引,當solr本身的配置發生變化時,比如當你改變分析器或者當你改變同義詞等。希望它清楚 – leenasn

+0

是的,我知道我必須在這些情況下做一個完整的重新索引。但在我的(上述)場景中,我不會更改配置,只是數據。所以我想知道solr是否會得到通知(不僅如果模型數據改變,而且如果關聯的數據改變)。 – moritz