Rails:如何使用PG_Search搜索Act_As_Taggable_On生成的标签?(PostgreSQL系统)

kib*_*ekr 9 postgresql search ruby-on-rails ruby-on-rails-3 pg-search

我目前使用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]
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误,因为Post表中没有Post.tag_list列.当你可以通过点连接器(即mission.tag_list)找到值但表中不存在时,它叫什么?我不知道要输入什么.所以基本上,我如何将不存在的列作为参数传入?

另外,你可能已经注意到我已经注释掉了

 :using => [:tsearch => {:prefix => true}] #:trigram, :dmetaphone]
Run Code Online (Sandbox Code Playgroud)

以上.我似乎无法找到如何为Postgresql安装额外的模块.我在哪里输入CREATE EXTENSION?(使用ubuntu 11.10和postgresql 9.1.3 - >和heroku进行制作)

小智 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 
Run Code Online (Sandbox Code Playgroud)

我刚刚在我的一个项目中实现了它并且运行良好(通过标记名称搜索).不幸的是,我无法弄清楚如何对关联关系进行加权,因为它在项目表中找不到"标签"列.