具有多场面的Solr分组

时间:2013-03-01 07:21:13

标签: solr lucene

我想知道是否可以使用 solr query

  1. 要考虑的两列:location1,location2
  2. 想在两个栏目上做面孔。
  3. 以下查询将有效:

    http://localhost:8983/solr/select/? q=*:*&version=2.2&rows=0&facet=true&facet.field=location1&facet.field=location2
    

    响应:

        <response>
            <lst name="responseHeader">
                <int name="status">0</int>
                <int name="QTime">13</int>
            </lst>
            <result name="response" numFound="7789" start="0"/>
            <lst name="facet_counts">
            <lst name="facet_queries"/>
            <lst name="facet_fields">
            <lst name="location1">
                <int name="Chicago">100</int>
                <int name="NewYork">50</int>
                <int name="Washington">30</int>
            </lst>
            <lst name="location2">
                <int name="Washington">200</int>
                <int name="Philadelphia">100</int>
                <int name="Chicago">50</int>
            </lst>
    <response>
    

    我需要的是将location1和location2分组并得到以下结果:

    Washington  :230
    Chicago     :50
    Philadelphia:100
    Washington  :30
    

    目前我们在服务层进行此操作。但这可以使用solr中的结果分组来完成吗?我理解的是结果分组给出了所有数据的汇总,但没有做一个方面主题聚合。

2 个答案:

答案 0 :(得分:0)

Solr没有support Grouping on Multivalued个字段。

Support for grouping on a multi-valued field has not yet been implemented. 

您可以使用组合值在索引处创建新字段,并使用字段进行分面。

编辑: - 使用复制字段将两个字段的内容复制到单个字段并在其上执行构面。只需要架构更改和重建索引数据

答案 1 :(得分:0)

您需要将location1location2存储在一个多值字段中,例如locations。然后,您可以发出此facet查询以获得所需内容:

q=*:*&rows=0&facet=true&facet.field=locations