首页 文章

在Solr中对Facets进行分组

提问于
浏览
0

在我的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 成为同一个方面吗?换句话说,我需要在响应中使facet信息看起来像这样:

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

1 回答

  • 1

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

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

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

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

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

相关问题