2011-07-17 1 views
1

私は、プロジェクトのための可能なインデックス作成ソリューションとしてSunspotを調査しています。一つのことがありますが、私は何についての情報も見つけられません。どのようにデータの更新が処理されますか?私が索引付けしたいクラスを「セットアップ」した場合、ソルバー・サーバーはオブジェクトの変更についてどのように通知されますか?またSunspot:デルタインデックスはどのように機能しますか?

、次のシナリオを検討してください:

私は「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の親文書を更新する必要があります(例えば、上記のSynonymモデルへの直接更新)。

+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

関連する問題