我正在尝试编写搜索方法,搜索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
以上显然不起作用,只是在那里解释这个概念。任何想法,将不胜感激。干杯!
答案 0 :(得分:1)
最好使用全文搜索库来实现这一目标。
如果您使用Postgres作为数据库,则可以使用pg_search为您的模型添加范围,这些范围利用Postgres的全文搜索功能构建。
或者,如果您不想添加任何外部依赖项,则可以使用Acts as Indexed将已排名的全文结果添加到您的应用中。
可以在Ruby Toolbox找到相当全面的各种选项列表。
披露:我是acts_as_indexed的作者。