gpt4 book ai didi

ruby-on-rails - 按Tire/ElasticSearch中的整个字段值分组

转载 作者:行者123 更新时间:2023-12-03 02:09:46 25 4
gpt4 key购买 nike

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

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

地区

  • 上东区22
  • 西村15
  • 苏活区8
  • 等...
  • def self.search(params={})        tire.search(page: 1 || params[:page], per_page: 10, load: true) do          # Set up query          query do            boolean do              must { string params[:query], default_operator: "AND" } if params[:query].present?              must { range :price, { gte: (params[:min_price] || 0), lte: params[:max_price] } } if params[:max_price].present?            end          end          # Facets to return          # this is where I get stuck:          facet 'areas' do            terms [:area_name], size: 10          end       endend

    The facet block just returns:

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

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

    最佳答案

    构面是根据查询返回的文档计算得出的,因此,如果未获得任何匹配,则不会计算任何构面。您的构面定义不正确,应将字段名称作为Symbol或String传递,请参阅https://github.com/karmi/tire/blob/master/test/integration/facets_test.rb#L16

    关于ruby-on-rails - 按Tire/ElasticSearch中的整个字段值分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16155540/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com