如何通过具有精确值的字段对Solr结果进行排序并同时划分为桶

时间:2018-03-20 12:28:24

标签: solr

我在Solr中有一个与此相似的索引:

url         outcome  owner time
/api/helo1  OK       Ref1  14:50
/api/helo1  OK       Ref1  15:00
/api/helo1  OK       Ref1  15:01
/api/helo1  KO       Ref1  15:02
/api/helo1  KO       Ref1  15:03
/api/work2  OK       Ref2  15:00
/api/work2  OK       Ref2  15:01
/api/work2  OK       Ref2  15:02
/api/work2  KO       Ref2  15:02
/api/work2  OK       Ref2  15:03
/api/work2  OK       Ref2  15:04

我需要创建一个以桶形式返回结果的查询,但是根据特定存储桶中的计数也有一个特定的顺序,如下所示:

 "facets": {
    "count": 11,
    "outcomeStatsForApi": {
        "buckets": [
            {
                "val": "/api/work2",
                "count": 6,
                "outcomes": {
                    "buckets": [
                        {
                            "val": "OK",
                            "count": 5
                        }, 
                        {
                            "val": "KO",
                            "count": 1
                        }
                    ]
                }
            },
            {
                "val": "/api/helo1",
                "count": 5,
                "outcomes": {
                    "buckets": [
                        {
                            "val": "OK",
                            "count": 3
                        }, 
                        {
                            "val": "KO",
                            "count": 2
                        }
                    ]
                }
            }
       ]
   }
}

所以在这种情况下,桶“outcomeStatsForApi”中的结果顺序是:具有MAX =记录结果= OK的“url”是第一个。

我还希望能够修改结果显示的顺序:例如,将MAX编号为“KO”的结果排在第一位。

如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

实际上我无法正确满足您的要求。 一旦我明白你正在寻找多级小组计数。 您可以使用facet查询对此进行归档。

对于单一级别,您可以使用facet.field和多级facet.pivot,它会返回this之类的输出,有关详细信息,您也可以参考this