0

我正在尝试编写一种搜索方法来搜索 an 的全文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

以上显然是行不通的,它只是为了解释这个概念。任何想法,将不胜感激。干杯!

4

1 回答 1

1

你最好使用全文搜索库来实现这一点。

如果您使用 Postgres 作为您的数据库,您可以使用pg_search为您的模型添加范围,从而利用 Postgres 内置的全文搜索功能。

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

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

披露:我是acts_as_indexed 的作者。

于 2013-01-31T09:23:33.027 回答