【问题标题】:Group by entire field value in Tire/ElasticSearch按轮胎/弹性搜索中的整个字段值分组
【发布时间】:2013-04-15 20:27:42
【问题描述】:

我正在使用 Tire ruby​​gem 连接到 ElasticSearch。如何根据特定字段的值返回构面?

例如,我有一个字段areas,我想将前 10 个区域显示为过滤器选项:

区域

  • 上东区 22
  • 西村15号
  • 苏豪8
  • 等等……
def self.search(params={}) Tire.search(page: 1 || params[:page], per_page: 10, load: true) 做 # 设置查询 查询做 布尔值 必须 { string params[:query], default_operator: "AND" } if params[:query].present? 必须 { range :price, { gte: (params[:min_price] || 0), lte: params[:max_price] } } 如果 params[:max_price].present? 结尾 结尾 # 要返回的构面 # 这是我卡住的地方: 方面的“区域”做 术语 [:area_name],大小:10 结尾 结尾 结尾

facet 块刚刚返回:

{"areas"=>{"_type"=>"terms", "missing"=>5754, "total"=>0, "other"=>0, "terms"=>[]}}

即使所有记录都有区域名称的值。

【问题讨论】:

    标签: ruby-on-rails search full-text-search elasticsearch


    【解决方案1】:

    分面是根据查询返回的文档计算得出的,因此如果您没有得到任何命中,则不会计算分面。您的方面定义不正确,您应该将字段名称作为符号或字符串传递,请参阅https://github.com/karmi/tire/blob/master/test/integration/facets_test.rb#L16

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-14
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多