假设我有三个对象
[
{
'name' : 'Apple',
'popularityFoo': 100,
'popularityBar': 80,
'popularity': 40,
},
{
'name' : 'Banana',
'popularityFoo': 50,
'popularityBar': 90,
'popularity': 50,
},
{
'name' : 'Cherry',
'popularityFoo': 60,
'popularityBar': 60,
'popularity': 60,
}
];
我的默认排序是受欢迎程度,返回Cherry (60), Banana (50), Apple (40)
如果用户具有首选类别,则它将首先按该类别流行度指数排序,然后再回归到流行度。因此,如果我最喜欢的类别是Foo,则返回Apple (100), Cherry (60), Banana (50)
,对于类别栏,搜索返回Banana (90), Apple (80), Cherry (60)
现在我的问题:如果我的用户喜欢两者 Foo和Bar,我如何在排序时将不同的受欢迎度值相互比较,以便得到结果Apple (100), Banana (90), Cherry (60)
?我索引错了吗?我应该采用不同的方法吗?
我有20个类别,我的用户有1-3个喜欢的类别。
答案 0 :(得分:1)
使用脚本进行条件排序如下:
{
"sort" : {
"_script" : {
"type" : "number",
"script" : {
"lang": "painless",
"inline": "doc['popularityFoo'].value > doc['popularityBar'].value ? doc['popularityFoo'].value : doc['popularityBar'].value"
},
"order" : "desc"
}
}
}
答案 1 :(得分:0)
感谢Mohammad's answer提示,我解决这个问题的方法是使用setcookie("mpsClient_id","", time() - 3600,"../");
$_COOKIE["mpsClient_id"] ="";
unset($_COOKIE["mpsClient_id"]);
为每个其他类别嵌套函数。
Math.max(double a, double b)