在我的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
成为同一个方面吗?换句话说,我需要在响应中使facet信息看起来像这样:
"facet_count": {
"facet_fields": {
"foo": ["abc", 13, "def", 20 "ghi", 38, "jkl", 1]
}
}
1 回答
不,我的建议是将值索引到单个字段中 . 使用复制字段指令,这看起来像这样(在schema.xml中):
这将保留原始的foo和bar字段 . 要获得综合方面,只需在新字段上进行分析即可:
编辑:可能使用构面查询,但仅当唯一值列表很小且有限时,并且您愿意为每个值编写单独的构面查询 . 即使这样,结果也会有所不同(每个查询计数而不是字段值数组,计数) .