簡體   English   中英

Rails:如何使用PG_Search搜索Act_As_Taggable_On生成的標簽? (PostgreSQL系統)

[英]Rails: How do I search tags generated by Act_As_Taggable_On with PG_Search? (postgresql)

我目前使用Act_as_taggable_on標記和pg_search通過我的PostgreSQL數據庫我的Rails搜索3應用程序。

如何使用pg_search搜索act_as_taggable_on gem生成的標簽? 我可以通過說“Post.find(1).tag_list”來查看帖子的標簽,但Post表中沒有“tag”列,所以當我運行時

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

它給了我一個錯誤,因為Post表中沒有Post.tag_list列。 當你可以通過點連接器(即mission.tag_list)找到值但表中不存在時,它叫什么? 我不知道要輸入什么。 基本上,我如何將不存在的列作為參數傳入?

另外,你可能已經注意到我已經注釋掉了

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

以上。 我似乎無法找到如何為Postgresql安裝額外的模塊。 我在哪里輸入CREATE EXTENSION? (使用ubuntu 11.10和postgresql 9.1.3 - >和heroku進行制作)

一個更簡單的方法是使用通過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 

我剛剛在我的一個項目中實現了它並且運行良好(通過標記名稱搜索)。 不幸的是,我無法弄清楚如何對關聯關系進行加權,因為它在項目表中找不到“標簽”列。

這對我來說也可以加權標簽

    pg_search_scope :search_by_weight, 
      :against => {  
      :title => 'B',
      :content => 'C'    
    },       
    :associated_against => {
      :tags => { :name => 'A' }    
    },
    using: {tsearch: {dictionary: "english"}}

幾年前我在plpgsql中編寫了我的實現。 請參閱我的博客: http//omarqureshi.net/articles/2010-12-25-tsearch2-for-rails-applications ,其中介紹了如何使其正常運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM