一个文章排序的问题

问题描述:有新闻文章N篇,里边可能有非常相似的文章需要去重,每篇文章有发表时间和评论数两个属性,需要找到有序的最新最热的十篇文章,如何做效果最好
    注:1、通常来讲,评论数越高则该文质量越高、越热
            2、去重算法相对耗时
            3、这个操作很频繁
方法一:直接按照时间或者评论数逆序输出,去重后取前十个。
        这个方案最简单,但是只能从单维度来反映顺序,最新和最热不能兼顾。
方法二:先去重,引入时间衰减算法并结合评论数计算得分(下称衰减,算法不是本文重点),按得分逆序输出前十个。
        该方案能够基本兼顾时间和热度,输出顺序的效果明显要好很多;
        在优化方面,如果N值比较大,那么去重算法会比较耗时导致运行太慢;
        另外一个方面,最后得到的文章排序中时间错乱感非常强烈,尤其对于日期(某月某日),不太符合新闻本身的时效常识。
方法三:先衰减再去重。
        这个方案是在方案二的基础上改变了一下去重和衰减的顺序,旨在降低计算的复杂度;
        先按照时间衰减得到了一个排序,取前M个(M>10,或者30或者50),然后对M个进行去重;
        这个方法的缺点是M等于多少才能保证去重后仍然足够10个,如果要求必须足够10个的话那么就不太可行。
方法四:先去重,再衰减,取得分前十个,再按时间逆序输出。
        该方案也是对方案二的一个改进,主要修正方案二中带来的强烈时间错乱感;
        注意该方法最后按照时间排序时只取了衰减之后的前十名;
        采用该方案后发现有这种现象:排在前几名的文章中可能都是同一日期的,可是评论数最多的却排在了后面。
方法五:先去重,再衰减,取得分前十个,最后按照日期逆序、对于日期相同的按照评论数逆序。
        该方案是对方案四的一个修正,在方案四的基础上,最后排序时,先按日期进行排序,如果日期相同的则按照评论数排序,这样就保证了最后得到的十篇文章一定是按照日期逆序,而且又兼顾了热度。

       没有完美的算法,只有合适的算法,方案五的缺点其实也很明显,去重的计算量比较大,这只能在去重算法上做一些优化来弥补。


  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值