免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1953 | 回复: 0
打印 上一主题 下一主题

多条件排序问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-27 19:53 |只看该作者 |倒序浏览
当要求页面显示的内容按照多重要求排序时,可借鉴如下做法。

一个物品数据库有若干属性

   型号     品牌    会员等级   年代     地区           现货    认证    热门

   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






   
未完.....

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/51862/showart_2105741.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP