一个文章排序的问题.pdf
文本预览下载声明
小小印印的的博博客客
沉沉积积、、关关注注、、思思考考、、交交流流
一一个个文文章章排排序序的的问问题题
2013-04-24 10:23 411人 读 评论 (0) 收藏 举报
算法优化
问题描述:有新闻文章N篇,里边可能有非常相似的文章需要去重,每篇文章有发表时间和评论数两个属性,需要找
到有序的最新最热的十篇文章,如何做效果最好
注:1、通常来讲,评论数越高则该文质量越高、越热
2、去重算法相对耗时
3、这个操作很频繁
方方法法一一::直直接接按按照照时时间间或或者者评评论论数数逆逆序序输输出出,,去去重重后后取取前前十十个个。。
这个方案最简单,但是只能从单维度来反映顺序,最新和最热不能兼顾。
方方法法二二::先先去去重重,,引引入入时时间间衰衰减减算算法法并并结结合合评评论论数数计计算算得得分分 ((下下称称衰衰减减,,算算法法不不是是本本文文重重点点)),,按按得得分分逆逆序序
输输出出前前十十个个。。
该方案能够基本兼顾时间和热度,输出顺序的效果明显要好很多;
在优化方面,如果N值比较大,那么去重算法会比较耗时导致运行太慢;
另外一个方面,最后得到的文章排序中时间错乱感非常强烈,尤其对于日期(某月某 日),不太符合
新闻本身的时效常识。
方方法法三三::先先衰衰减减再再去去重重。。
这个方案是在方案二的基础上改变了一下去重和衰减的顺序,旨在降低计算的复杂度;
先按照时间衰减得到了一个排序,取前M个 (M10,或者30或者50),然后对M个进行去重;
这个方法的缺点是M等于多少才能保证去重后仍然足够10个,如果要求必须足够10个的话那么就不太
可行。
方方法法四四::先先去去重重,,再再衰衰减减,,取取得得分分前前十十个个,,再再按按时时间间逆逆序序输输出出。。
该方案也是对方案二的一个改进,主要修正方案二中带来的强烈时间错乱感;
注意该方法最后按照时间排序时只取了衰减之后的前十名;
采用该方案后发现有这种现象:排在前几名的文章中可能都是同一日期的,可是评论数最多的却排
在了后面。
方方法法五五::先先去去重重,,再再衰衰减减,,取取得得分分前前十十个个,,最最后后按按照照 日日期期逆逆序序、、对对于于 日日期期相相同同的的按按照照评评论论数数逆逆序序。。
该方案是对方案四的一个修正,在方案四的基础上,最后排序时,先按日期进行排序,如果日期相
同的则按照评论数排序,这样就保证了最后得到的十篇文章一定是按照 日期逆序,而且又兼顾了热度。
没有完美的算法,只有合适的算法,方案五的缺点其实也很明显,去重的计算量比较大,这只能在去
重算法上做一些优化来弥补。
更多
上一篇:多应用共享memcache缓存带来的问题
下一篇:Sonar在检查java代码隐患中的作用
顶
12
踩
0
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
1
核核心心技技术术类类 目目
全部主题 Java VPN Android iOS ERP IE10 Eclipse CRM JavaScript Ubuntu NFC WAP jQuery 数据库 BI HTML5
Spring Apache Hadoop .NET API HTML SDK IIS Fedora XML LBS Unity Splashtop UML components
Windows Mobile Rails QEMU KDE Cassandra CloudStack FTC coremail OPhone CouchBase 云计算 iOS6
Rackspace Web App SpringSide Maemo Compuware 大数据 aptech Perl Tornado Ruby Hibernate ThinkPHP
Spark HBase Pure Solr Angular Cloud Foundry Redis Scala Django Bootstrap
个人资料
no
显示全部