【问题标题】:Searchkick: Searching multiple specific fields in the same querySearchkick:在同一查询中搜索多个特定字段
【发布时间】:2023-03-08 02:52:01
【问题描述】:

我正在尝试在我的 rails 应用程序中进行高级搜索,但我遇到了一些空参数问题

类产品

当我填写搜索和大小字段时,一切正常,但如果我将大小字段留空,结果中不会显示任何内容...

可能我在做一些愚蠢的事情

我让它与一堆 IF 一起工作:

def index

if params[:search].present?
  if params[:size].present?
    @products = Product.search params[:search], where: {size: params[:size]}
  else
    @products = Product.search params[:search]
  end      
else
  if params[:size].present?
    @products = Product.search "*", where: {size: params[:size]}
  else
    @products = Product.search "*"
  end

end

但可能这不是最好的方法,考虑到我将搜索至少 5 个其他领域...

搜索、尺寸、品牌、颜色、商店状态、价格、评级等...

对不起我的英语,我希望你们能理解我的问题并能够帮助我..

【问题讨论】:

    标签: ruby-on-rails elasticsearch searchkick


    【解决方案1】:

    我是smth:

    ...
    search_condition = params[:search] || '*'
    where_conditions = params.slice(:size, :brand, :color, ...)
    
    @products = if where_conditions.any?
      Product.search search_condition, where: where_conditions
    else
      Product.search search_condition
    end
    

    【讨论】:

    • 谢谢哥们,但不工作,得到这个错误:未知操作员和我的参数看起来像这样...“size”=>{“id”=>“M”而不是“size” =>{"M"
    【解决方案2】:

    找到了解决办法

    Setting up Facets in Elasticsearch with Searchkick gem in Rails 4.1

     query = params[:query].presence || "*"
     conditions = {}
     conditions[:state] = params[:state] if params[:state].present?
     conditions[:city] = params[:city] if params[:city].present?
    
     movies = Movie.search query, where: conditions
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多