0

我正在寻找一种在分组列表中显示我的方面的方法。例如,我有一些用户和一个按国家/地区过滤的方面,这给了我:

  • 国家
    • 荷兰 (5)
    • 英格兰 (2)
    • 埃及 (5)
    • 卢旺达 (2)

我想要的是:

  • 欧洲
    • 荷兰 (5)
    • 英格兰 (2)
  • 非洲
    • 埃及 (5)
    • 卢旺达 (2)

我在 Rails 应用程序中使用轮胎 gem,我的模型和关系是这样的: http: //api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-option_groups_from_collection_for_select

我已经在谷歌上搜索了几个小时的示例,只是在 Elasticsearch 中找不到对我有意义的嵌套/分组方面的任何内容。希望有人可以在正确的方向上帮助我!提前谢谢了!

丹尼尔

4

1 回答 1

0

您可以通过以两种方式索引数据然后解析输出来处理这个问题。使用“对象”版本来应用过滤器,并将您的解析版本作为一个方面来显示过滤器。

例如:

    "mydocument":{
    "attributes":[     
       "location":{
        {"continent":"europe",
        "country":"england"
       },
     "fur_style":"long"
   ],
"facets":[
       {"location":"Europe##england"},
       {"fur_style":"long"
    ]
    }

当您取回数据时,您将拥有:

"facets":[
{"location":"Europe##england",
"total":5},
{"location":"africa##egypt",
"total":7}
{"fur_style":"long",
 "total":3}
etc etc
]

在您的应用程序中,您只需要使用 ## 分隔符(或任何您想要的分隔符)循环并分解术语。

于 2013-09-26T15:26:34.853 回答