我们使用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,为什么我的订单错误? 组排序是在文档排序后发生的吗?
我有什么想法可以解决这个问题吗?