Rails:使用伪相关性进行搜索

时间:2013-01-31 03:51:02

标签: mysql ruby-on-rails-3 full-text-search

我正在尝试编写搜索方法,搜索Article的全文,并按该全文中搜索词的出现次数对结果进行排序。像这样:

def search
  term = params[:term]
  @articles = Article.where("body like ?", "%#{term}%")
  @articles.each do |a|
    b = a.body.count(term)
  end
  @articles = @articles.order("#{b} desc").limit(10).pluck(:name)
  render json: @articles, b
end

以上显然不起作用,只是在那里解释这个概念。任何想法,将不胜感激。干杯!

1 个答案:

答案 0 :(得分:1)

最好使用全文搜索库来实现这一目标。

如果您使用Postgres作为数据库,则可以使用pg_search为您的模型添加范围,这些范围利用Postgres的全文搜索功能构建。

或者,如果您不想添加任何外部依赖项,则可以使用Acts as Indexed将已排名的全文结果添加到您的应用中。

可以在Ruby Toolbox找到相当全面的各种选项列表。

披露:我是acts_as_indexed的作者。