Rails按活动记录顺序搜索

时间:2015-09-12 14:38:47

标签: ruby-on-rails postgresql

我想在rails中组织搜索结果。 如果我搜索一个字符串,例如"食品"使用

Products.where("name ILIKE '%food%' or name ILIKE '%products%' or name ILIKE '%food products%'")

但结果集没有组织。我希望结果与完整的"食品和#34;字符串在顶部。但我无法安排结果如何。

任何帮助都将受到高度赞赏

感谢

2 个答案:

答案 0 :(得分:1)

在这种情况下,您可能希望利用Postgres中的全文搜索功能。 pg_search gem使这很容易在rails中实现。将gem 'pg_search'添加到您的Gemfile并运行bundle

在你的模特中:

class Product < ActiveRecord::Base
  include PgSearch
  pg_search_scope :search_by_name, :against => :name
end

现在你可以使用这种方法,它应该把&#34;食品和#34;如果那是完全匹配,则结果在顶部:

Product.search_by_name('food products')

答案 1 :(得分:1)

试一试

  

Products.where(&#34;名称LIKE&#39;%food%&#39; OR name LIKE&#39;%product%&#39;&#34;)。order(&#34;当名称喜欢&#39;%食物%&#39;然后1   当名称喜欢&#39;%产品%&#39;那么2   ELSE 100 END)

这将根据您的排序顺序为您提供结果。