2013-04-12 63 views
7

我對Solr索引機制感到困惑。也許有人可以對此有所瞭解。維持Sunspot Solr指數的正確方法是什麼?

因此,我們有2個耙命令:rake sunspot:solr:indexrake sunspot:solr:reindex

這裏就是我的index任務樣子(我推翻它Mongoid):

namespace :sunspot do 
    namespace :solr do 
    desc "indexes searchable models" 
    task :index => :environment do 
     [Model1, Model2].each do |model| 
     Sunspot.index!(model.all) 
     end 
    end 
    end 
end 

據我瞭解,我的定義index每次運行時都會有效地重新集合這些集合。

對嗎? 覆蓋前一個索引還是必須使用reindex刪除舊索引並創建新索引?

我使用寶石,sunspot_mongo v1.0.1sunspot_solr v2.0.0

回答

8

重新索引任務只是呼籲每個模型solr_reindex和源對於方法如下(從GitHub獲取)。

# Completely rebuild the index for this class. First removes all 
    # instances from the index, then loads records and indexes them. 
    # 
    # See #index for information on options, etc. 
    # 
    def solr_reindex(options = {}) 
    solr_remove_all_from_index 
    solr_index(options) 
    end 

如果你看一下,從源頭上solr_index,評論說該方法WIL「在Solr的索引添加/更新所有現有的記錄。」

因此要回答您的問題,reindex任務基本上與index任務相同,只是reindex任務將首先刪除現有索引。如果您的索引中包含您不知道的項目,請致電reindex。如果您知道您只是添加或更新索引中的項目,則只需撥打index即可,而不會因刪除索引然後從頭重新構建索引而受到影響。

相關問題