在Solr中对Facets进行分组

时间:2014-06-18 18:19:35

标签: solr

在我的Solr索引中,我有两种不同类型的项目,AB,在我的索引中分别有不同的字段foobar,但类似我需要将这些值组合在一起进行分面。

A:
  foo: /* could be "abc", "def" or "ghi" */

B:
  bar: /* could be "abc", "ghi", or "jkl" */

分别获取每个字段的方面信息非常容易:

http://myServer:<port>/<SolrPath>/q=<query>&facet.field=foo&facet.field=bar

这给了我:

"facet_count": {
    "facet_fields": {
        "foo": ["abc", 10, "def", 20 "ghi", 30],
        "bar": ["abc", 3, "ghi", 8, "jkl", 1]
    }
}

在Solr中是否有一种方法可以指定我希望字段A.fooB.bar&#34;集中在一起&#34;进入同一个方面?换句话说,我需要在响应中使facet信息如下所示:

"facet_count": {
    "facet_fields": {
        "foo": ["abc", 13, "def", 20 "ghi", 38, "jkl", 1]
    }
}

1 个答案:

答案 0 :(得分:1)

不,我的建议是将值索引到单个字段中。使用复制字段指令,这将是这样的(在schema.xml中):

<copyField source="foo" dest="foobar" />
<copyField source="bar" dest="foobar" />

将保留原始的foo和bar字段。要获得综合方面,只需在新字段上进行分析:

?q=*:*
&facet=true
&facet.field=foobar

编辑:可能使用构面查询,但仅当唯一值列表很小且有限时,您才愿意为每个值编写单独的构面查询。即使这样,结果也会有所不同(每个查询计数而不是字段值数组,计数)。