我想在rails中组织搜索结果。 如果我搜索一个字符串,例如"食品"使用
Products.where("name ILIKE '%food%' or name ILIKE '%products%' or name ILIKE '%food products%'")
但结果集没有组织。我希望结果与完整的"食品和#34;字符串在顶部。但我无法安排结果如何。
任何帮助都将受到高度赞赏
感谢
答案 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)
这将根据您的排序顺序为您提供结果。