2015-03-11 6 views
6

मेरे पास मॉडल की संख्या और पृष्ठों को देखने के साथ रेल 4 एप्लिकेशन हैं। मेरे एप्लिकेशन के एप्लिकेशन लेआउट में एक खोज बार है। लेकिन यह अभी तक निष्क्रिय है। खोज बार का उद्देश्य उपयोगकर्ता को कीवर्ड (ओं) के लिए सभी मॉडलों के माध्यम से खोज करने की अनुमति देना है, मूल रूप से इसे वैश्विक खोज बनाना। क्या कोई मणि है जो सार्वभौमिक खोज करता है? या इसे एसक्यूएल प्रश्नों के माध्यम से मैन्युअल रूप से किया जाना है? मैं अपने दृश्य पृष्ठ पर एक विशिष्ट मॉडल के लिए खोज को लागू करने का तरीका देख सकता हूं। लेकिन मैं इसे एक ही समय में सभी मॉडलों के माध्यम से खोजना चाहता हूं। मुझे इसे किस प्रकार करना चाहिए?रेल में सार्वभौमिक खोज को कार्यान्वित करना 4

उत्तर

5

मुझे लगता है कि आपके मामले में सबसे अच्छा तरीका है ElasticSearch उपयोग करने के लिए है। एक स्वच्छ एकीकरण मणि here प्रदान किया जाता है। दस्तावेज के लिए लिंक उस पृष्ठ पर प्रदान किए जाते हैं।

+0

मणि मॉडल प्रति एक सूचकांक का निर्माण नहीं करता की अनुमति देता है? क्या सभी मॉडलों के लिए एक इंडेक्स बनाने का कोई तरीका है? या वैकल्पिक रूप से आप कई इंडेक्स पर एक बार कैसे खोजते हैं? मुझे एक लिंक पर इंगित करना मेरे लिए काफी अच्छा है। –

+0

pg_search मणि ​​के बारे में कैसे? क्या यह काफी लायक है। क्योंकि मेरा डेटाबेस सनस्पॉट पर खर्च करने के लिए बहुत बड़ा नहीं है। –

+1

@ विवेकट्रिपथी अच्छी तरह से, यदि आपकी खोज सरल है, तो आप 'pg_search' का उपयोग कर सकते हैं, लेकिन इसका मतलब है कि आप अपने डीबी पर फंस जाते हैं और जब आपका ऐप बढ़ता है तो यह काफी स्केलेबल नहीं होता है। – Almaron

3

Sunspot रेल ऐप में खोज जोड़ने के लिए सबसे अधिक उपयोग किए जाने वाले मणि में से एक है।

अनुक्रमण इस तरह दिखता है:

class Post < ActiveRecord::Base 
    searchable do 
    text :title, :body 
    text :comments do 
     comments.map { |comment| comment.body } 
    end 
    integer :blog_id 
    integer :author_id 
    integer :category_ids, :multiple => true 
    time :published_at 
    string :sort_title do 
     title.downcase.gsub(/^(an?|the)\b/, '') 
    end 
    end 
end 

और खोज:

Post.search do 
    fulltext 'best pizza' 
    with :blog_id, 1 
    with(:published_at).less_than Time.now 
    order_by :published_at, :desc 
    paginate :page => 2, :per_page => 15 
    facet :category_ids, :author_id 
end 
+1

Sunspot अनेक मॉडल भर में एक खोज – lulalala

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