2012-05-19 13 views
9

मैं वर्तमान में टैगिंग और pg_search के लिए Act_as_taggable_on का उपयोग कर रहा हूं ताकि मेरे रेल 3 एप्लिकेशन पर मेरे पोस्टग्रेस्क्ल डेटाबेस को खोज सकें।रेल: मैं PG_Search के साथ Act_As_Taggable_On द्वारा जेनरेट किए गए टैग कैसे खोजूं? (postgresql)

मैं act_as_taggable_on gem द्वारा pg_search के साथ उत्पन्न टैग के माध्यम से कैसे खोज करूं? मैं ", Post.find (1) .tag_list" कह कर एक पोस्ट के टैग देख सकते हैं लेकिन वहाँ पोस्ट तालिका में कोई "टैग" स्तंभ हैं, तो यह मुझे एक देता है जब मैं

pg_search_scope :search_by_weight, :against => {:tag_list => 'A', :title => 'B', :content => 'C'} #,:using => [:tsearch => {:prefix => true}] #:trigram, :dmetaphone] 

चलाने त्रुटि क्योंकि कॉलम Post.tag_list पोस्ट तालिका में मौजूद नहीं है। जब आप डॉट कनेक्टर (यानी मिशन.tag_list) के माध्यम से मान पा सकते हैं तो यह क्या कहा जाता है लेकिन जब यह तालिका में मौजूद नहीं होता है? मुझे नहीं पता था कि किस प्रकार टाइप करना है। तो मूल रूप से, मैं एक मौजूदा कॉलम में पैराम्स के रूप में कैसे पास करूं?

इसके अलावा, आप देखा हो मैं बाहर

:using => [:tsearch => {:prefix => true}] #:trigram, :dmetaphone] 
ऊपर

टिप्पणी की। मुझे लगता है कि Postgresql के लिए अतिरिक्त मॉड्यूल कैसे स्थापित करें। मैं विस्तार कहां टाइप करूं? (उबंटू 11.10 और पोस्टग्रेस्क्ल 9.1.3 -> और उत्पादन के लिए उसकेोकू का उपयोग करके)

+0

भारित करने के लिए? – kibaekr

उत्तर

8

एक और अधिक सरल दृष्टिकोण सिर्फ संघ और खोज है कि pg_search जो इस तरह से किया जाता है के माध्यम से उपयोग कर रहा है:

class Item < ActiveRecord::Base 
include PgSearch 

    pg_search_scope :full_search, 
    :against => { 
    :item_status => 'A', 
    :title => 'B', 
    :description => 'C'  
    },  
    :associated_against => { 
    :tags => [:name]  
    } 
end 

मैं सिर्फ अपनी परियोजनाओं में से एक में यह लागू किया है और यह अच्छी तरह से काम (टैग नाम के माध्यम से खोजा गया)। दुर्भाग्य से मैं यह नहीं समझ सकता कि संबंधित संबंधों को कैसे भारित किया जाए क्योंकि यह कहता है कि "टैग" कॉलम आइटम तालिका में नहीं मिला है।

+0

उत्तर के लिए धन्यवाद! हाँ, मैंने वास्तव में इसे इस बिंदु तक अभी तक समझ लिया है, लेकिन मुझे टैग का वजन भी वही समस्या थी। क्या आप अतिरिक्त खोज सुविधाओं (यानी ट्रिग्राम) को काम करने में सक्षम थे? (क्या आप हेरोकू का उपयोग कर रहे हैं?) – kibaekr

+0

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

+0

मैं देखता हूं। हाँ मुझे लगता है कि मुझे स्थानीय रूप से काम करने के लिए अतिरिक्त सुविधाएं मिल गई हैं, लेकिन मुझे नहीं लगता कि यह अभी Heroku पर काम करता है। (मुझे लगता है कि ऐसा इसलिए हो सकता है क्योंकि मुझे सर्वर पर contrib संकुल को अद्यतन या स्थापित करने की आवश्यकता है, लेकिन heroku मुझे पीजी डेटाबेस को अद्यतन करने और स्थापित करने की अनुमति नहीं देगा) – kibaekr

1

मैंने कुछ साल पहले plpgsql में अपना कार्यान्वयन लिखा था। मेरा ब्लॉग देखें: http://omarqureshi.net/articles/2010-12-25-tsearch2-for-rails-applications जो इसे काम करने के तरीके को कवर करता है।

+0

एचएम ... शुरुआत के रूप में, यह अभी भी वास्तव में भ्रमित करने की कोशिश कर रहा है कि आप अपने ब्लॉग पोस्ट में क्या कर रहे हैं और इसे मेरी स्थिति पर लागू करें .. – kibaekr

+0

मैं plpgsql पर एक गाइड पढ़ने और ट्रिगर दस्तावेज के लिए शुरू कर दूंगा postgres। –

+0

यह समाधान है! उमर के बहुत अच्छे पोस्ट, हालांकि कुछ फ़ंक्शंस थोड़ा अधिक जटिल हैं और मैंने उन्हें थोड़ा सा साफ़ कर दिया है। फिर भी मैंने इसे कभी भी आपके ब्लॉग पोस्ट के बिना नहीं बनाया होगा। अगर मैं कर सकता तो मैं आपको 10 अंक तक वोट दूंगा :) चीयर्स –

3

यह मेरे लिए काम किया टैग यह कैसे हल करने के लिए पर कोई विचार @muistooshort रूप में अच्छी तरह

pg_search_scope :search_by_weight, 
     :against => { 
     :title => 'B', 
     :content => 'C'  
    },  
    :associated_against => { 
     :tags => { :name => 'A' }  
    }, 
    using: {tsearch: {dictionary: "english"}} 
संबंधित मुद्दे