排名方法和装置与流程

文档序号:11950456阅读:195来源:国知局
排名方法和装置与流程

本发明涉及数据处理领域,尤其涉及一种排名方法和装置。



背景技术:

在互联网应用中,经常可以用到各种排名,例如:针对最热门的内容、最活跃的用户、最受欢迎的话题等等对象进行排名,排名通过排名算法得以实现。

在现有的排名算法中,通常是按照一定的数据统计周期对数据库中的对象进行定期排名统计,然后将排名结果放置在内存中,当客户刷新页面的时候可以实现排名结果的同步更新。这种方法适用于对排名实时性要求不高的场景,用户对这种排名的敏感度不高,有稍微的延时或者不准确是可以被容忍的。

但是,对于某些应用来说,用户对排名的实时性要求较高,例如:一个网站为了防止受到恶意访问的攻击,需要实时统计访问网络互连协议(Internet Protocol,简称IP)地址的次数,并对访问量较大的一些IP地址进行控制,但是,通过现有的排名算法无法满足用户对排名的实时性要求。



技术实现要素:

本发明提供一种排名方法和装置,用户可以实时获取排名,满足了用户对排名的实时性要求。

本发明提供的排名方法,包括:

获取待排名对象的当前属性信息;其中,所述当前属性信息包括所述待排名对象的对象标识和所述待排名对象的当前属性值;

根据所述对象标识和所述当前属性值更新全对象队列中存储的历史属性信息,根据更新后的历史属性信息获取所述待排名对象的更新属性值;其中,所述全对象队列位于内存中且包括在获取所述待排名对象之前获取到的所有对象的历史属性信息;

根据所述对象标识和所述更新属性值更新排名队列,获得排名结果;其中,所述排名队列位于内存中且包括多个已经排名的对象的属性信息。

本发明提供的排名装置,包括:

获取模块,用于获取待排名对象的当前属性信息;其中,所述当前属性信息包括所述待排名对象的对象标识和所述待排名对象的当前属性值;

第一更新模块,用于根据所述对象标识和所述当前属性值更新全对象队列中存储的历史属性信息,根据更新后的历史属性信息获取所述待排名对象的更新属性值;其中,所述全对象队列位于内存中且包括在获取所述待排名对象之前获取到的所有对象的历史属性信息;

第二更新模块,用于根据所述对象标识和所述更新属性值更新排名队列,获得排名结果;其中,所述排名队列位于内存中且包括多个已经排名的对象的属性信息。

本发明提供一种排名方法和装置,排名方法包括:获取待排名对象的当前属性信息,根据对象标识和当前属性值更新全对象队列中存储的历史属性信息,根据更新后的历史属性信息获取待排名对象的更新属性值,根据对象标识和更新属性值更新排名队列,获得排名结果。本发明提供的排名方法,通过在内存设置两个队列,可以实时的根据待排名对象的当前属性信息更新全对象队列和排名队列,因此,用户可以实时获取排名,满足了用户对排名的实时性要求。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例一提供的排名方法的流程图;

图2为本发明实施例二提供的排名方法的流程图;

图3为本发明实施例一提供的排名装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

图1为本发明实施例一提供的排名方法的流程图,本实施例提供的排名方法,执行主体可以为排名装置。如图1所示,本实施例提供的排名方法,可以包括:

步骤101、获取待排名对象的当前属性信息。

其中,当前属性信息包括待排名对象的对象标识和待排名对象的当前属性值。

具体的,待排名对象的对象标识用于唯一区分不同的待排名对象,待排名对象的当前属性值是指在上一次排名与本次排名之间,待排名对象的属性值的变化值。

需要说明的是,本实施例对于待排名对象的对象标识的具体实现方式不加以限制。

需要说明的是,本实施例对于待排名对象的类型不加以限制,对于不同类型的对象,其属性值的含义、计算方式都不相同,根据需要进行设置。

例如:若待排名对象为IP地址,则IP地址的属性值可以为IP地址的访问次数,其计算方式可以为,每当IP地址访问或者被访问一次,则IP地址的属性值加1。

又例如:若待排名对象为用户,则用户的属性值可以为用户的综合得分,其计算方式可以为,用户被关注一次,则用户的综合得分加2分,用户被取消关注一次,则用户的综合得分减2分,用户关注其他用户,则用户的综合得分加1分,用户取消关注其他用户,则用户的综合得分减1分,等等。

再例如:若待排名对象为文章,则文章的属性值可以为文章的综合得分,其计算方式可以为,文章被点赞一次,则文章的综合得分加1分,文章被转发一次,则文章的综合得分加2分,文章被下载一次,则文章的综合得分加3分,等等。

步骤102、根据对象标识和当前属性值更新全对象队列中存储的历史属性信息,根据更新后的历史属性信息获取待排名对象的更新属性值。

其中,全对象队列位于内存中且包括在获取待排名对象之前获取到的所有对象的历史属性信息。

可见,在全对象队列中,存储了所有已经获取到的对象的历史属性信息,对于待排名对象,如果在本次排名之前已经进行过排名,则在全对象队列中将存储有待排名对象的历史属性信息,如果在本次排名之前没有进行过排名,则在全对象队列中将不会存储有待排名对象的历史属性信息。由于在本次排名和上一次排名之间,待排名对象的当前属性值可能发生变化,而且,全对象队列中存储的是所有已经获取到的对象的历史属性信息,因此,在本步骤中,根据待排名对象的对象标识和待排名对象的当前属性值更新全对象队列,并且,根据更新后的全对象队列中更新后的历史属性信息可以获取待排名对象的更新属性值。

其中,对象的历史属性信息包括对象的对象标识和对象的历史属性值。对象的对象标识用于唯一区分不同的对象,对象的历史属性值是指在本次排名之前该对象的属性值。

其中,待排名对象的更新属性值是指在本次排名中包含有待排名对象历史属性信息和当前属性信息的最新获得的属性值。

可选的,作为一种具体的实现方式,步骤102,根据对象标识和当前属性值更新全对象队列中存储的历史属性信息,根据更新后的历史属性信息获取待排名对象的更新属性值,可以包括:

根据对象标志判断待排名对象是否位于全对象队列中。

若待排名对象位于全对象队列中,则获取全对象队列中待排名对象的历史属性值,根据预设数据更新规则对当前属性值和历史属性值进行数据处理得到更新后的历史属性值,将更新后的历史属性值作为更新属性值。

其中,本实施例对于预设数据更新规则不加以限制,不同类型的对象,其对应的预设数据更新规则可能不同,根据需要进行设置。

例如:若待排名对象为IP地址,则预设数据更新规则可以为权值相加运算。

相应的,根据预设数据更新规则对当前属性值和历史属性值进行数据处理得到更新后的历史属性值,可以包括:

获取当前属性值所属范围对应的权值,将权值与当前属性值相乘后与历史属性值进行相加的结果作为更新后的历史属性值。

假设,IP地址的访问次数在(0,20)范围对应的权值为0.2,IP地址的访问次数在(20,50)范围对应的权值为0.5,如果,IP地址1的历史属性值为123次,IP地址1的当前属性值为16次,则更新后的IP地址1的历史属性值为0.2*16+123=126.2次。

又例如:若待排名对象为文章,则预设数据更新规则可以为相加运算。

相应的,根据预设数据更新规则对当前属性值和历史属性值进行数据处理得到更新后的历史属性值,可以包括:

将当前属性值与历史属性值进行相加的结果作为更新后的历史属性值。

假设,文章X的历史属性值为123分,文章X的当前属性值为16分,则更新后的文章X的历史属性值为16+123=139分。

可选的,步骤102,根据对象标识和当前属性值更新全对象队列中存储的历史属性信息,根据更新后的历史属性信息获取待排名对象的更新属性值,还可以包括:

若待排名对象不在全对象队列中,则将待排名对象插入至全对象队列的队尾,将当前属性值作为待排名对象的历史属性值以及更新属性值。

例如:若待排名对象为用户Y,用户Y的当前属性值为56分,用户Y不在全对象队列中,说明本次排名之前用户Y没有进行过排名,则将用户Y插入至全对象队列的队尾,并且,将用户Y的当前属性值56分作为用户Y的历史属性值和用户Y的更新属性值。

需要说明的是,本实施例对于全对象队列的长度不做特别限制,例如,可以设置为固定值,也可以不做限制。

需要说明的是,本实施例对于全对象队列中各个对象的存放位置不做特别限制,例如,可以按序存放,也可以无序存放。

步骤103、根据对象标识和更新属性值更新排名队列,获得排名结果。

其中,排名队列位于内存中且包括多个已经排名的对象的属性信息。

可见,本实施例提供的排名方法,在内存中设置两个队列,一个为全对象队列,存储所有已经获取到的对象的历史属性信息,另一个为排名队列,存储已经排名的多个对象的属性信息。对于一个待排名对象,可以实时的根据待排名对象的当前属性信息更新全对象队列,根据更新后的全对象队列获取待排名对象的更新属性值,根据待排名对象的更新属性值更新排名队列,从而得到最新的排名结果。由于全对象队列和排名队列位于内存中,根据排名对象的当前属性信息可以实时快速刷新排名结果,因此,相比于现有技术中定期刷新排名结果,用户可以实时获取排名,满足了用户对排名的实时性要求。

可选的,排名队列包括预设数值个对象。

通过设置预设数值,可以节约内存的存储空间。其中,预设数值根据需要进行设置。

需要说明的是,在本实施例中,无论是待排名对象,或者是全对象队列中的对象,或者是排名队列中的对象,同一个对象的对象标识相同。

本实施例提供了一种排名方法,包括:获取待排名对象的当前属性信息,根据对象标识和当前属性值更新全对象队列中存储的历史属性信息,根据更新后的历史属性信息获取待排名对象的更新属性值,根据对象标识和更新属性值更新排名队列,获得排名结果。本实施例提供的排名方法,用户可以实时获取排名,满足了用户对排名的实时性要求。

图2为本发明实施例二提供的排名方法的流程图,本实施例在实施例一的基础上,提供了排名方法的另一种实现方式,尤其提供了实施例一中步骤103的具体实现方式。如图2所示,本实施例提供的排名方法,实施例一中步骤103,根据对象标识和更新属性值更新排名队列,可以包括:

步骤201、根据对象标志判断待排名对象是否位于排名队列中。

步骤202、若待排名对象位于排名队列中,则获取位于待排名对象前面的第一对象,并判断更新属性值是否大于第一对象的第一属性值。

步骤203、若更新属性值大于第一对象的第一属性值,则交换待排名对象与第一对象的位置,并继续获取位于待排名对象前面的第二对象,针对第二对象重复执行上述判断是否交换位置的操作,直至更新属性值小于第二对象的第二属性值或者直至待排名对象位于排名队列的队首。

具体的,如果待排名对象位于排名队列中,说明待排名对象在本次排名之前已经进行过排名,则需要根据待排名对象的更新属性值更新排名队列。如果待排名对象的更新属性值大于其前面的第一对象的第一属性值,则需要对待排名对象重新进行排序,即,将待排名对象的位置与第一对象的位置进行互换,然后,需要继续判断待排名对象与其之前的第二对象是否需要交换排名位置,即,获取位于待排名对象前面的第二对象,判断更新属性值是否大于第二对象的第二属性值,若更新属性值大于第二对象的第二属性值,则交换待排名对象与第二对象的位置,以此类推,直至待排名对象的更新属性值小于其前面的对象的属性值,或者,直至待排名对象位于排名队列的队首,此时,对排名队列中各个对象的排名位置更新完成,可以获得最近的排名结果。

可见,本实施例提供的排名方法,如果待排名对象位于排名队列中,仅更新待排名对象与其之前对象的排名位置关系,而不必更新待排名对象与其之后对象的排名位置关系,由于并不是更新整个排名队列,因此,提升了排名的更新速度,进一步提升了排名的实时性。

可选的,本实施例提供的排名方法,还可以包括:

若待排名对象位于排名队列中,且更新属性值小于或者等于第一对象的第一属性值,则不更新排名队列。

可选的,本实施例提供的排名方法,还可以包括:

若待排名对象不在排名队列中,则获取位于排名队列队尾的第三对象,并判断更新属性值是否大于第三对象的第三属性值。

若更新属性值大于第三对象的第三属性值,则将待排名对象插入至第三对象的位置之前,并继续获取位于待排名对象前面的第四对象,针对第四对象重复执行上述判断是否交换位置的操作,直至更新属性值小于第四对象的第四属性值或者直至待排名对象位于排名队列的队首。

具体的,如果待排名对象不在排名队列中,说明待排名对象在本次排名之前没有进行过排名,因此,需要从排名队列最后一个对象开始判断待排名对象是否可以进入排名队列。如果待排名对象的更新属性值大于排名队列队尾的第三对象的第三属性值,则待排名对象可以进入排名队列,即,将待排名对象插入至第三对象的位置之前,然后,需要继续判断待排名对象与其之前的第四对象是否需要交换排名位置,以此类推,直至待排名对象的更新属性值小于其前面的对象的属性值,或者,直至待排名对象位于排名队列的队首,此时,对排名队列中各个对象的排名位置更新完成,可以获得最近的排名结果。

其中,将待排名对象插入至第三对象的位置之前,可以理解,如果排名队列已满,则第三对象将被替换出排名队列,如果排名队列未满,则第三对象仍然在排名队列中,仅是下移一个排名位置。

可选的,本实施例提供的排名方法,还可以包括:

若待排名对象不在排名队列中,且更新属性值小于或者等于第三对象的第三属性值,则判断排名队列是否为满队列。

若排名队列未满,则将待排名对象插入至排名队列的队尾。

本实施例提供了一种排名方法,具体提供了更新排名队列的实现方式。本实施例提供的排名方法,用户可以实时获取排名,满足了用户对排名的实时性要求。

图3为本发明实施例一提供的排名装置的结构示意图,本实施例提供的排名装置,用以执行图1-图2所示的任一实施例提供的排名方法。如图3所示,本实施例提供的排名装置,可以包括:

获取模块11,用于获取待排名对象的当前属性信息。其中,当前属性信息包括待排名对象的对象标识和待排名对象的当前属性值。

第一更新模块12,用于根据对象标识和当前属性值更新全对象队列中存储的历史属性信息,根据更新后的历史属性信息获取待排名对象的更新属性值。其中,全对象队列位于内存中且包括在获取待排名对象之前获取到的所有对象的历史属性信息。

第二更新模块13,用于根据对象标识和更新属性值更新排名队列,获得排名结果。其中,排名队列位于内存中且包括多个已经排名的对象的属性信息。

可选的,第二更新模块13具体用于:

根据对象标志判断待排名对象是否位于排名队列中。

若待排名对象位于排名队列中,则获取位于待排名对象前面的第一对象,并判断更新属性值是否大于第一对象的第一属性值。

若更新属性值大于第一对象的第一属性值,则交换待排名对象与第一对象的位置,并继续获取位于待排名对象前面的第二对象,针对第二对象重复执行上述判断是否交换位置的操作,直至更新属性值小于第二对象的第二属性值或者直至待排名对象位于排名队列的队首。

可选的,第二更新模块13还用于:

若待排名对象位于排名队列中,且更新属性值小于或者等于第一对象的第一属性值,则不更新排名队列。

可选的,第二更新模块13还用于:

若待排名对象不在排名队列中,则获取位于排名队列队尾的第三对象,并判断更新属性值是否大于第三对象的第三属性值。

若更新属性值大于第三对象的第三属性值,则将待排名对象插入至第三对象的位置之前,并继续获取位于待排名对象前面的第四对象,针对第四对象重复执行上述判断是否交换位置的操作,直至更新属性值小于第四对象的第四属性值或者直至待排名对象位于排名队列的队首。

可选的,第二更新模块13还用于:

若待排名对象不在排名队列中,且更新属性值小于或者等于第三对象的第三属性值,则判断排名队列是否为满队列。

若排名队列未满,则将待排名对象插入至排名队列的队尾。

可选的,第一更新模块12具体用于:

根据对象标志判断待排名对象是否位于全对象队列中。

若待排名对象位于全对象队列中,则获取全对象队列中待排名对象的历史属性值。根据预设数据更新规则对当前属性值和历史属性值进行数据处理得到更新后的历史属性值。将更新后的历史属性值作为更新属性值。

可选的,第一更新模块12还用于:

若待排名对象不在全对象队列中,则将待排名对象插入至全对象队列的队尾。将当前属性值作为待排名对象的历史属性值以及更新属性值。

本实施例提供的排名装置,用于执行图1-图2所示方法实施例提供的排名方法,其技术原理和技术效果类似,此处不再赘述。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1