2017-11-17 27 views
6

इम की स्थापना। मैंने इस तरह एक गुंजाइश:pg_search मणि ​​और प्रतिलिपि प्राप्त खोज रैंक मेरी postgres db पर प्रतिलिपि प्राप्त खोज करने के लिए मणि <a href="https://github.com/Casecommons/pg_search" rel="noreferrer">pg_search</a> का उपयोग कर

pg_search_scope :fulltext, against: [:firstname, :lastname, :middlename], 
       using: { 
        tsearch: { prefix: true }, 
        trigram: { 
         :threshold => 0.2 
        } 
        } 

जब मैं तार के साथ खोज gro मैं चाहूँगा कि रिकॉर्ड है कि वास्तव में शब्द gro से मेल रैंक अभिलेख समूह की तरह शब्दों से मेल की तुलना में अधिक है (समूहgro होते हैं)।

किसी भी विचार है, अगर वहाँ कुछ सेटिंग्स हैं यह करने के लिए?

उत्तर

3

मैं Django में एक बहुत ही इसी तरह की स्थिति थी और मैं trigram समानता और tsearch रैंक संक्षेप हल किया। सटीक मिलान के साथ शब्द के साथ

समानता, एक आंशिक मैच तुलना में अधिक है के रूप में आप PostgresSQL पर जांच कर सकते हैं:

SELECT similarity('gro', 'gro') AS exact, similarity('gro', 'group') AS partial; 
exact | partial 
-------+---------- 
    1 | 0.428571 

मैं एक गहरे लाल रंग का विशेषज्ञ नहीं हूँ, लेकिन मैं pg_search प्रलेखन पढ़ा है और मुझे लगता है कि अपने प्रश्न के लिए समाधान इस के समान करने चाहिए:

pg_search_scope :fulltext, 
       against: [:firstname, :lastname, :middlename], 
       using: { 
        tsearch: { prefix: true }, 
        trigram: { 
         :threshold => 0.2 
        } 
       }, 
       :ranked_by => ":tsearch + :trigram" 
संबंधित मुद्दे