[英]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.