2010-03-26 13 views
8

मैंने पहले एक खोज सुविधा लागू नहीं की है और थोड़ा फंस गया है। मेरे पास एक सनस्पॉट सर्च फीचर है जो खोजशब्दों के आधार पर परिणाम पाती है - यह बहुत अच्छा काम करती है - लेकिन अब मैं बहु चयन फीचर फीचर को कार्यान्वित करना चाहता हूं, लेकिन मुझे लगता है कि बुनियादी पहलू खोज को कैसे सेट अप करना है। , कौशल:मैं सनस्पॉट का उपयोग करके कई लोगों के साथ एक पहलू खोज कैसे स्थापित करूं?

मैं कई रिश्ते के लिए कई (रेल में नहीं वास्तविक जीवन में) है:

वर्ग के लोगों has_many => अनुभव (और इसके विपरीत आदि)

Class People < ActiveRecord::Base 
    has_many :skills, :through => experience 

    searchable do 
    text :first_name, :surname 
    end 
end 

में के माध्यम से नियंत्रक

@search = Sunspot.search(People) 
    facet :skill_ids 
end 

यह मूल उदाहरण है जिसे मैं काम नहीं कर सकता। यह इस त्रुटि उत्पन्न: skill_ids

मुझे लगता है कि मैं मॉडल में कुछ संदर्भ याद आ रही किया जाना चाहिए - लेकिन कोई उदाहरण मैं संदर्भ करते आईडी पा सकते हैं:

Sunspot::UnrecognizedFieldError: No field configured for People with name 'skill_ids' 

मैं के लिए लिंक कैसे बना सकता हूँ एक रिश्ता। मैंने पाया कि उदाहरणों में से अधिकांश उदाहरण कॉलम का उपयोग करते हैं जो पहलू कार्यक्षमता का उपयोग करते समय पहले से ही उस मॉडल में हैं।

  • मैं बुनियादी कार्यान्वयन कैसे काम कर सकता हूं?
  • मैं इस दृश्य में इसका उपयोग कैसे करूं - क्या मुझे हिट्स.फैसेट को कॉल करना होगा और कौशल पर पुनरावृत्ति करना होगा? यह कोड प्रदर्शित करने के लिए कोड कैसा दिखता है?
  • मैं खोज करने के लिए एकाधिक पहलुओं का चयन कैसे करूं?
  • क्या मुझे इसे समुदाय विकी में रखना चाहिए?

आपके समय के लिए धन्यवाद!

उत्तर

13

कुछ भी जिसे आप फ़िल्टर करना, पहलू या ऑर्डर करना चाहते हैं, सनस्पॉट को इसके बारे में जानना आवश्यक है। तो आपके मॉडल में:

searchable do 
    text :first_name, :surname 
    integer :skill_ids, :multiple => true, :references => Skill 
end 

आपका # आपके नियंत्रक में खोज कॉल सही दिखता है। आपके विचार में, आप इन पंक्तियों के साथ कुछ करना चाहते हैं:

- @search.facet(:skill_ids).rows.each do |row| 
    = row.instance.name 

row.instance कौशल के कहने वापस आ जाएगी उस पंक्ति के मूल्य (कि क्या :references विकल्प searchable परिभाषा क्या कर रहा है है) को दर्शाता है।

मुझे यकीन है कि आप "से खोज करने के लिए एकाधिक पक्षों को चुनें" क्या मतलब है नहीं कर रहा हूँ - एक एकाधिक पक्षों को एक खोज में facet विधि कई बार फोन करके (जिसकी सहायता से उपयोगकर्ता खोज शोधन के लिए विकल्पों दे) उत्पन्न कर सकते हैं ; और फिर आप with विधि का उपयोग करके स्कोप प्रतिबंधों के साथ अपने पहलू विकल्पों का उपयोग कर सकते हैं, जिसे आप जितनी बार चाहें कॉल कर सकते हैं।

विकिज़ की बात हो रही है, इस जानकारी का सबसे Sunspot विकि में (अधिक विवरण के साथ) उपलब्ध है:

+1

धन्यवाद! मुझे विकी या कहीं और में कई भाग का संदर्भ नहीं मिला - गलत खोज शब्द या कुछ का उपयोग करना चाहिए। आपको "खोज करने के लिए कई पहलुओं का चयन करें" के बारे में सही विचार मिला - एक और तरीका डालें: एकाधिक चयनों द्वारा फ़िल्टरिंग। विकी अब परीक्षण करने के लिए एक कामकाजी डेमो के साथ मुझे समझ में आता है! मैं अगले फ़िल्टरिंग कार्यक्षमता में जोड़ने का प्रयास करूंगा: क्या मुझे लगता है कि मैं एक लिंक_to बना सकता हूं और अतिरिक्त पहलुओं के लिए पैरामीटर में पास कर सकता हूं, या यह एक लंबा रास्ता है? फिर से धन्यवाद! –

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

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