Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Rails:如何在搜索结果中使用facet_Sql_Ruby On Rails_Search_Facet_Faceted Search - Fatal编程技术网

Sql Rails:如何在搜索结果中使用facet

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

我有一个rails应用程序,我正在其中搜索修理店。搜索类方法如下所示:

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

我会非常感谢你的帮助。谢谢