当要求页面显示的内容按照多重要求排序时,可借鉴如下做法。
一个物品数据库有若干属性
型号 品牌 会员等级 年代 地区 现货 认证 热门
LM358 MAX 一级 09 中国 现货库存 通过 是
LM358 MAX 二级 09 美国 - 未通过 是
LM358 MAX 一级 09 美国 - 未通过 否
如果只按照简单的一个或两个任务做排序是比较简单的,但如果有一个比较复杂的排序规则该如何做呢?
比如:
1 会员等级高的排在最前面
2 通过了认证的排在前面
3 热门的排在前面
4 国内的排在前面
按照这个规则做,我们可以再建立一个字段 OID
我们给每一个规则评分
1 会员等级高的排在最前面 一级80分 二级 60分 三级40
一级80分那后面的分值总和为20分 这样低级的无论如何都逾越不了第一级
2 通过了认证的排在前面 通过+12分
3 热门的排在前面 通过+ 6分
4 国内的排在前面 通过+ 1分
要保证后面加起来的分值是前面的总和 4+3+2 + 1=100分 而且低级排序规则分值相加逾越不了高级排序规则,只能平级竞争。这样
型号 品牌 会员等级 年代 地区 现货 认证 热门 OID
LM358 MAX 二级 09 中国 - 通过 是 79分
LM358 MAX 一级 09 中国 现货库存 通过 是 99分
LM358 MAX 一级 09 美国 - 未通过 否 80分
LM358 MAX 一级 09 美国 - 未通过 否 81分
给出了分值之后按照分值排序就得到了想要的效果:
型号 品牌 会员等级 年代 地区 现货 认证 热门 OID
LM358 MAX 一级 09 中国 现货库存 通过 是 99分
LM358 MAX 一级 09 美国 - 未通过 否 81分
LM358 MAX 二级 09 中国 - 通过 是 80分
LM358 MAX 一级 09 美国 - 未通过 否 79分
有没有通项式呢?
首先我们把分值定为100满分
第一项分值如何定: 第一项分值一般看第一个条件有没有做分级,比如第一个条件是按会员级别,会员级别是分级的,一级、二级、三级、四级、五级。 小于4极的我们一般定80分起,因为100-80=20
20分要分给后项,要保证二级的+20分也不超过一级,所以二级定60分一直到4级20分 如果有第五级那第一级就不能定80分,最合适的分值是90分 这样每一个子集分值就为90 80 70 60 50 40 30 20 10.
第二级也是一样,但最后一级要注意,要在刚好总分值加起来=100的基础上减去一个最小单位,比如上面的第四项分值如果为2刚好加起来=100,但这里要减去一个最小单位1,以保证以上各项分值不可逾越。
我们以一般1000满分统计 首项小于5级
|
一级 |
二级 |
三级 |
四级 |
最优先条件1 |
800 |
600 |
400 |
200 |
次级条件2 |
160 |
120 |
80 |
40 |
再次条件3 |
20 |
16 |
08 |
04 |
再次条件4 |
2 |
1.6 |
0.8 |
0.4 |
最后条件5 |
0.2 |
0.16 |
0.08 |
0.04 |
|
|
|
|
|
未完.....
阅读(1202) | 评论(0) | 转发(0) |