假设我有3个类别:A,B和C。我希望先显示A,然后显示B,最后显示C。
某些类别具有布尔值,这也将赋予它优先级。我们称其为“ isPriority”。在下一行的示例中,我们为*指定“ isPriority”
因此顺序应为:A *,A,B *,B,C *,C。
我认为可以为每个类别设置权重,如果isPriority
为true,则将权重相乘。这是我的代码:
query: {
function_score: {
query: {
match_all: {},
},
functions: [
{
filter: {
match: {
category: 'A',
},
},
weight: 100,
},
{
filter: {
match: {
category: 'B',
},
},
weight: 90,
},
{
filter: {
match: {
category: 'C',
},
},
weight: 80,
},
{
filter: {
match: {
isPriority: true,
},
},
weight: 2,
},
],
score_mode: 'multiply',
},
},
};
是的,返回的结果按以下顺序排序:
B*, B*, B*, C*, C*, B*, A*, B*
我想念什么?
谢谢!