【问题标题】:Sort is not working as expected in after applying group sort ion solr应用组排序离子 solr 后,排序未按预期工作
【发布时间】:2017-05-10 18:02:10
【问题描述】:

我使用 solr 4.3.0,我需要从每个组的最小值进行排序(asc/desc)。

我使用下面的查询来实现 group.sort 基于价格如下,

查询:group.field=id&group.ngroups=true&group.sort=price_USD+asc&group=true&group.facet=true&group.limit=1 结果:

{
  "grouped": {
    "category": {
      "matches": 9,
      "groups": [
        {
          "groupValue": "11121",
          "doclist": {
            "numFound": 3,
            "start": 0,
            "docs": [
              {
                "id": "233",
                "catentry_id": "ProductBean",
                "price_USD": 24,
                "category": "11121",
                "version": 1566834290000396300
              }
            ]
          }
        },
        {
          "groupValue": "111",
          "doclist": {
            "numFound": 3,
            "start": 0,
            "docs": [
              {
                "id": "2",
                "catentry_id": "ProductBean",
                "price_USD": 24,
                "category": "111",
                "version": 1566833543360807000
              }
            ]
          }
        },
        {
          "groupValue": "11112",
          "doclist": {
            "numFound": 3,
            "start": 0,
            "docs": [
              {
                "id": "22",
                "catentry_id": "ProductBean",
                "price_USD": 22,
                "category": "11112",
                "version": 1566833809098276900
              }
            ]
          }
        }
      ]
    }
  }
}

但是对查询应用排序并没有按预期工作,因为它正在考虑来自每个组的所有值不限于每个组的最小值。

请帮我解决这个问题

【问题讨论】:

    标签: solr


    【解决方案1】:

    group.sort 将对组内的文档进行排序。因此,在您的情况下,组内的结果将根据 price_USD 字段进行排序,但您的组将根据分数进行排序。

    为了对组进行相对排序,还可以使用 sort 参数。 将&sort=price_USD asc 附加到您的查询中。

    更多信息请参见here

    【讨论】:

    • 我的要求是对每个组的最小值(price_USD)进行排序,我可以根据它进行排序还是需要对其进行任何自定义
    • 因此您希望根据每个组的最小值对组进行排序。对吗?
    • 你试过了吗?这个逻辑应该有效。由于您将每个组限制为 1 个结果并根据价格进行排序,因此只会返回最小值,因此组应根据最低价格进行排序。
    • 是的,按最低(asc)价格排序是正确的,但我想在 desc 中排序最小值,我需要考虑每个组的最小值。但它正在考虑每个组的最高价格。跨度>
    • 明确地说,您将group.sort=price_USD asc&sort=price_USD asc 与您的组限制参数一起放入对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 2016-02-27
    • 1970-01-01
    • 2018-02-27
    相关资源
    最近更新 更多