假设我有一堆t恤,每件t恤都有不同的款式。每个变量都有一个排名值:
[
[
'name' => 'T-Shirt, Variant AAA',
'ranking' => 1.
'shirt_id' => 1
],
[
'name' => 'T-Shirt, Variant ZZZ'
'ranking' => 2,
'shirt_id' => 1,
],
[
'name' => 'Another Shirt, Variant BBB',
'ranking' => 1,
'shirt_id' => 2,
]
]
如果用户现在执行搜索-按名称排序-我希望得到以下结果:
[
[
'name' => 'Another Shirt, Variant BBB',
'ranking' => 1,
'shirt_id' => 2,
],
[
'name' => 'T-Shirt, Variant ZZZ'
'ranking' => 2,
'shirt_id' => 1,
],
]
所以第一次击中的是唯一的变种从衬衫2号。第二个命中的是从shirt\u id 1中排名最高的变体。
我试过好几种方法。通过折叠我发现有可能通过衬衫id折叠,并通过内部点击得到排名最高的变体。但顺序不正确,因为按名称排序不是对折叠的内部命中执行的,而是对实际命中执行的。
我还尝试了总点击率聚合。如果我理解正确,这将按定义的字段(shirt\u id)聚合结果,并返回具有相同字段值的每个文档的最高分数的文档。但是,如果我按名称进行自定义排序,就不会得到任何分数值,即使我另外添加了一个函数score query,它只会将ranking字段作为分数值。
你知道怎么解决这个问题吗?
暂无答案!
目前还没有任何答案,快来回答吧!