2013-04-12 5 views
7

मैं सोलर इंडेक्सिंग तंत्र के बारे में उलझन में हूं। शायद कोई इस पर कुछ प्रकाश डाल सकता है।सनस्पॉट सौर के लिए सूचकांक बनाए रखने का सही तरीका क्या है?

तो, हम 2 रेक आदेशों है:,

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 

जहां तक ​​मैं समझता हूँ की मेरी परिभाषा: rake sunspot:solr:index और rake sunspot:solr:reindex

यहाँ मेरी index काम की तरह (मैं Mongoid के लिए यह overrode) दिखता है index प्रत्येक बार जब मैं इसे चलाता हूं तो संग्रह को प्रभावी ढंग से पुन: संशोधित कर रहा है।

क्या मैं सही हूँ? क्या यह पिछले सूचकांक को ओवरराइट करता है या क्या मुझे पुराने ड्रॉप करने और नए सूचकांक बनाने के लिए reindex का उपयोग करना है?

मैं जवाहरात , sunspot_mongo v1.0.1 उपयोग कर रहा हूँ

, sunspot_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 पर कॉल कर सकते हैं और इंडेक्स को छोड़ने के प्रदर्शन हिट को पीड़ित नहीं कर सकते हैं और फिर इसे स्क्रैच से पुनर्निर्माण कर सकते हैं।

संबंधित मुद्दे