使用group.sort和sort进行Solr排序会返回不合适的顺序

时间:2015-11-30 14:05:28

标签: sorting solr

我们使用solr进行产品搜索。作为产品,我们有基础产品的变体(例如衬衫可以有红色,绿色,黄色等颜色的变体),每个变体都是我们的solr索引中的文档。

现在我们要求只显示一个基于规则集的产品变体。 (1.购物车中的产品,2。销售中的产品,3。最低价格) 我尝试通过对每个产品的所有变体(在此示例中称为base_string)共同的字段进行分组来解决此问题,并根据规则集对组进行排序。 这工作正常但是当我按降序orderi中的价格(price_double字段)排序时会得到意外的结果。

例如,如果我有这些文件:

{
    "id": "000101",
    "name_string": "Test 1.1",
    "base_string": "0001",
    "price_double": 11.5,
    "test_boolean": true
},
{
    "id": "000102",
    "name_string": "Test 1.2",
    "base_string": "0001",
    "price_double": 10.5,
    "test_boolean": true
},
{
    "id": "000103",
    "name_string": "Test 1.3",
    "base_string": "0001",
    "price_double": 1.5,
    "test_boolean": true
},
{
    "id": "0002",
    "name_string": "Test 2",
    "base_string": "0002",
    "price_double": 5.5,
    "test_boolean": true
},
{
    "id": "0003",
    "name_string": "Test 3",
    "base_string": "0003",
    "price_double": 55.5,
    "test_boolean": true
}

我查询3个相关产品,其中以下查询按price_double按升序排序:

q=test_boolean%3Atrue&sort=price_double+asc&wt=json&indent=true&group=true&group.field=base_string&group.sort=price_double asc

结果似乎很好(000103(价格:1.5),0002(价格:5.5),0003(价格55.5))。

如果我按降序排序price_double,我会得到一个结果,对我来说,是非逻辑顺序:

q=test_boolean%3Atrue&sort=price_double+asc&wt=json&indent=true&group=true&group.field=base_string&group.sort=price_double desc

结果是:0003(价格55.5),000101(价格1.5),0002(价格5.5)

如果按降序排序price_double,为什么我的订单错误? 组排序是在文档排序后发生的吗?

我有什么想法可以解决这个问题吗?

0 个答案:

没有答案