【问题标题】:Grouping Facets in Solr在 Solr 中对构面进行分组
【发布时间】:2014-06-18 18:19:34
【问题描述】:

在我的 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_count": {
    "facet_fields": {
        "foo": ["abc", 13, "def", 20 "ghi", 38, "jkl", 1]
    }
}

【问题讨论】:

    标签: solr


    【解决方案1】:

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

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

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

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

    编辑:可以使用方面查询,但前提是唯一值列表很小且有限,并且您愿意为每个值编写单独的方面查询。即使这样,结果看起来也会有所不同(每个查询的计数而不是字段值数组,计数)。

    【讨论】:

    • 谢谢,这就是我要做的。如果我不能(政治上)改变架构,我可能最终会用构面查询来破解一些东西,但这听起来是更好的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2013-09-12
    • 2012-07-29
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    相关资源
    最近更新 更多