2013-04-12 20 views
7

Solr endeksleme mekanizması hakkında kafam karıştı. Belki birileri üzerinde biraz ışık tutabilir. , Bildiğim kadarıyla anladığım kadarıylaSunspot Solr için endeksleri sürdürmenin doğru yolu nedir?

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 

benim tanımı: İşte benim index görev (ı Mongoid için overrode) gibi görünür rake sunspot:solr:index ve rake sunspot:solr:reindex

:

Yani, biz 2 tırmık komutları var index, her çalıştırdığımda koleksiyonları yeniden dizine ekliyor.

Doğru muyum? Önceki dizinin üzerine yazıyor mu yoksa eskileri bırakmak ve yeni indeksleri oluşturmak için reindex mu kullanmalıyım?

Ben taşlar , sunspot_mongo v1.0.1 kullanıyorum

, sunspot_solr v2.0.0

cevap

8

reindex görev sadece modellerin her biri üzerinde solr_reindex çağırır ve bu yöntem için kaynak aşağıda (github alınan) olduğu. Eğer solr_index kaynaktan bakarsak

# 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 

, yorum yöntemi Wil "Solr endeksindeki/güncelleme mevcut tüm kayıtları ekleyin." demek Bu soruyu yanıtlamak için, reindex görevi, reindex görevinin ilk önce varolan dizini düşürmesi dışında, index göreviyle aynıdır. Endeksinizde bulunmaması gereken öğeleri varsa, reindex'u aramanız gerekir. Yalnızca endekste öğe eklediğinizi veya güncellediğinizi biliyorsanız, index numaralı telefonu arayabilir ve endeksi düşürme performansının üstesinden gelemez ve ardından tekrar sıfırdan yeniden oluşturabilirsiniz.

İlgili konular