在我的Solr索引中,我有两种不同类型的项目,A
和B
,在我的索引中分别有不同的字段foo
和bar
,但类似我需要将这些值组合在一起进行分面。
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.foo
和B.bar
&#34;集中在一起&#34;进入同一个方面?换句话说,我需要在响应中使facet信息如下所示:
"facet_count": {
"facet_fields": {
"foo": ["abc", 13, "def", 20 "ghi", 38, "jkl", 1]
}
}
答案 0 :(得分:1)
不,我的建议是将值索引到单个字段中。使用复制字段指令,这将是这样的(在schema.xml中):
<copyField source="foo" dest="foobar" />
<copyField source="bar" dest="foobar" />
将保留原始的foo和bar字段。要获得综合方面,只需在新字段上进行分析:
?q=*:*
&facet=true
&facet.field=foobar
编辑:可能使用构面查询,但仅当唯一值列表很小且有限时,您才愿意为每个值编写单独的构面查询。即使这样,结果也会有所不同(每个查询计数而不是字段值数组,计数)。