Sql Rails:如何在搜索结果中使用facet
我有一个rails应用程序,我正在其中搜索修理店。搜索类方法如下所示:Sql Rails:如何在搜索结果中使用facet,sql,ruby-on-rails,search,facet,faceted-search,Sql,Ruby On Rails,Search,Facet,Faceted Search,我有一个rails应用程序,我正在其中搜索修理店。搜索类方法如下所示: def self.search(params) if params repairshop = Repairshop.where(:approved => true) if params[:radius].present? repairshop = repairshop.near(params[:location], par
def self.search(params)
if params
repairshop = Repairshop.where(:approved => true)
if params[:radius].present?
repairshop = repairshop.near(params[:location], params[:radius]) if params[:location].present?
else
repairshop = repairshop.near(params[:location], 200) if params[:location].present?
end
if params[:keywords].present?
repairshop = repairshop.joins(:specializations).joins(:brands_we_services).where("LOWER(specializations.title) LIKE ? OR LOWER(brands_we_services.title) LIKE ? OR LOWER(repairshop.title) LIKE ?", "%#{params[:keywords].downcase}%", "%#{params[:keywords].downcase}%", "%#{params[:keywords].downcase}%")
end
repairshop.uniq
else
all
end
end
一家修理店可以有许多专业和品牌的维修服务。因此,搜索所有与其他参数不同的名称非常重要
搜索表单如下所示:
一切正常。搜索控制器会带我进入搜索页面。控制器操作如下所示:
def search
@repairshops = Repairshop.search(params)
end
搜索结果如下所示:
def self.search(params)
if params
repairshop = Repairshop.where(:approved => true)
if params[:radius].present?
repairshop = repairshop.near(params[:location], params[:radius]) if params[:location].present?
else
repairshop = repairshop.near(params[:location], 200) if params[:location].present?
end
if params[:keywords].present?
repairshop = repairshop.joins(:specializations).joins(:brands_we_services).where("LOWER(specializations.title) LIKE ? OR LOWER(brands_we_services.title) LIKE ? OR LOWER(repairshop.title) LIKE ?", "%#{params[:keywords].downcase}%", "%#{params[:keywords].downcase}%", "%#{params[:keywords].downcase}%")
end
repairshop.uniq
else
all
end
end
我的问题是:
在搜索页面左侧的搜索框下方,我想提供过滤结果的方面。我想提供动态的方面。就像根据搜索结果一样,它提供了城市的方面(修理店的数量)等
我不想使用弹性搜索或solr我想了解如何从头开始构建动态面搜索,以及从搜索结果构建面的基础知识
注意:我查看了40个方面,但不明白如何使用Repairshop模型中的复杂类方法搜索,并将其集成到控制器根据文档提供的类MovieSearch
我会非常感谢你的帮助。谢谢