消息的排序方法和装置与流程

文档序号:14178906阅读:554来源:国知局
消息的排序方法和装置与流程

本发明涉及计算机技术领域,尤其涉及一种消息的排序方法和装置。



背景技术:

目前绝大多数的应用程序(application,app)都有一套帐号系统,其中还有很大一部分会集成即时通讯(instantmessaging,im)功能。在集成了im系统的app中,消息列表是一个不可缺少的界面。很多app在消息列表中,不只显示用户的聊天消息,还会穿插一些其他类型的消息,如公众号、广告等,下文统称为自定义消息。一般的app中,im消息的消息源与自定义消息的消息源会有差别,比如app中,im消息是从im软件开发工具包(softwaredevelopmentkit,sdk)直接获取的,而诸如猜你喜欢、同城头条、系统消息等是单独从服务器(server)获取的,在显示之前需要将这些消息与im消息混合后排序展示。

目前,大多数app常用的消息排序算法比较简单,单纯地使用时间戳作为排序的依据。时间越晚的消息排列越靠前。

然而,上述排序方法太单一,不能满足一些比较特殊的消息类型,比如置顶消息,如果自定义消息很多,更新也比较快,那么这种方案会降低im消息的视觉重要性。



技术实现要素:

本发明提供一种消息的排序方法和装置,用于解决上述排序方法太单一,不能满足一些比较特殊的消息类型,比如置顶消息,如果自定义消息很多,更新也比较快,那么这种方案会降低im消息的视觉重要性的问题。

本发明第一方面提供一种消息的排序方法,包括:

在获取到新增消息时,提取所述新增消息中的排序参数;

获取与所述排序参数对应的排序公式,并将所述排序参数输入所述排序公式计算得到所述新增消息对应的排序数值;

将所述排序数值与排序数值列表中其他消息的排序数值进行对比,确定所述新增消息与其他消息的位置关系,并根据所述新增消息与其他消息的位置关系将所述新增消息进行展示。

可选的,所述方法还包括:

将所述新增消息对应的排序数值存储至所述排序数值列表中。

可选的,所述新增消息的类型为即时通讯消息或者自定义消息。

可选的,所述在获取到新增消息时,提取所述新增消息中的排序参数,包括:

在获取到新增消息时,根据所述新增消息的类型选择对应的消息适配器,通过所述消息适配器提取所述新增消息的排序参数。

可选的,所述排序数值列表中包括多个消息与对应的排序数值的对应关系,且所述排序数值列表中的多个消息按照排序数值由大到小或者由小到大的顺序排列;排序数值大的消息的排序优先级高于排序数值小的消息的排序优先级。

本发明第二方面提供一种消息的排序装置,包括:

第一处理模块,用于在获取到新增消息时,提取所述新增消息中的排序参数;

第二处理模块,用于获取与所述排序参数对应的排序公式,并将所述排序参数输入所述排序公式计算得到所述新增消息对应的排序数值;

第三处理模块,用于将所述排序数值与排序数值列表中其他消息的排序数值进行对比,确定所述新增消息与其他消息的位置关系,并根据所述新增消息与其他消息的位置关系将所述新增消息进行展示。

可选的,所述装置还包括:

存储模块,用于将所述新增消息对应的排序数值存储至所述排序数值列表中。

可选的,所述新增消息的类型为即时通讯消息或者自定义消息。

可选的,所述第一处理模块具体用于:

在获取到新增消息时,根据所述新增消息的类型选择对应的消息适配器,通过所述消息适配器提取所述新增消息的排序参数。

可选的,所述排序数值列表中包括多个消息与对应的排序数值的对应关系,且所述排序数值列表中的多个消息按照排序数值由大到小或者由小到大的顺序排列;排序数值大的消息的排序优先级高于排序数值小的消息的排序优先级。

本发明第三方面提供一种存储介质,包括:可读存储介质和计算机程序,所述计算机程序用于实现上述消息的排序方法。

本发明第四方面提供一种程序产品,该程序产品包括计算机程序(即执行指令),该计算机程序存储在可读存储介质中。终端设备的至少一个处理器可以从可读存储介质读取该计算机程序,至少一个处理器执行该计算机程序使得终端设备实施前述消息的排序方法。

本发明实施例提供的信息的推荐方法和装置,终端设备在获取到新增消息时,提取新增消息中的排序参数,获取与排序参数对应的排序公式,并将排序参数输入所述排序公式计算得到所述新增消息对应的排序数值,将排序数值与排序数值列表中其他消息的排序数值进行对比,确定新增消息与其他消息的位置关系,并根据新增消息与其他消息的位置关系将新增消息进行展示。实现灵活控制消息的排列顺序,使消息的排列顺序不受消息类型的限制,方便新增消息类型,提高用户体验。

附图说明

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

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

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

图3为本发明实施例提供的消息的排序方法一实例的流程图;

图4为本发明实施例提供的消息的排序装置实施例一的结构示意图;

图5为本发明实施例提供的消息的排序装置实施例二的结构示意图。

具体实施方式

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

根据背景技术的介绍可知,目前常用的对app中的消息进行排序的方式一种是单纯地使用时间戳作为排序的依据。时间越晚的消息排列越靠前,该排序方法太单一,不能满足一些比较特殊的消息类型,比如置顶消息。另外,如果自定义消息很多,更新也比较快,那么这种方案会降低im消息的视觉重要性。另一种是会给每个消息一个优先级标识,把所有优先级标识高的消息放在优先级低的消息前面,相同优先级内的消息按时间戳排序。以此实现诸如“置顶”等功能,该种方式适合少量消息优先不同的场景。其形式比较死板,不够灵活。当同一优先级的消息比较多时,这些消息的顺序不容易控制。如果优先级级数较多,管理起来会比较混乱。

基于上述问题,本申请提出一种可灵活控制消息的排序顺序,使得消息的排序顺序不受消息类型的限制,方便对新增消息进行排序的方式。

图1为本发明实施例提供的消息的排序方法实施例一的流程图,如图1所示,该方案的执行主体为手机、电脑、平板电脑等可以运行应用程序的终端设备,消息的排序方法的具体实现步骤为:

步骤s101,在获取到新增消息时,提取所述新增消息中的排序参数。

在本步骤中,终端设备的应用软件在接收到新增消息时,不再直接根据时间进行显示,而是通过预设的适配器进行提取处理,得到新增消息中可用于排序的排序参数,该排序参数可以是多个,例如:消息类型,预设的优先级信息,时间戳等,以便在后续排序处理过程中使用。

步骤s102,获取与所述排序参数对应的排序公式,并将所述排序参数输入所述排序公式计算得到所述新增消息对应的排序数值。

在本步骤中,终端设备在提取到新增消息的排序参数之后,获取对应的排序公式,系统中可设置多个排序公式,对具体的消息进行处理时,可根据消息的类型或者消息的来源,或者消息的标识,或者根据前述得到的排序参数,为该新增消息选择合适的排序公式。得到排序公式后将用于排序的排序参数输入该排序公式进行计算,得到一个该新增消息对应的数值,即排序数值。该数值与上述选择的排序参数相关,即不再是单独依赖时间或者优先级,而是综合多个因素得到的排序数值。

步骤s103,将所述排序数值与排序数值列表中其他消息的排序数值进行对比,确定所述新增消息与其他消息的位置关系,并根据所述新增消息与其他消息的位置关系将所述新增消息进行展示。

本方案具体实现中,在第二条消息被获取到,则可以按照上述的方式与第一条消息进行比较,即比较两个消息对应的排序数值的大小,对两条消息进行排序(可以是排序数值越大越靠前,也可以是数值越小越小越靠前,可根据具体实现制定相应的策略),同时将每个消息对应的排序消息进行记录,以此类推,在对多条消息按照该方式进行排序后,可得到一个排序数值列表,排序数值列表用于存储所有当前还未被删除的消息与排序数值之间的对应关系,在该排序数值列表中,消息可以用对应的标识进行表示。

在本步骤中,当终端设备获取到一个新增消息的排序数值之后,可将该数值与当前的排序数值列表中的所有的排序数值进行对比,当该新增消息的排序数值位于第n消息的排序数值和第n+1消息的排序数值之间时,则可确定该新增消息应排列在第n消息和第n+1消息之间,并在对该新增消息进行显示时,将该新增消息显示在第n消息和第n+1消息之间,完成消息的排序过程。

在上述根据排序数值进行排序的过程中,当遇到多个消息的排序数值相同时,可对该些排序数值相同的消息按照时间或者预设的优先级再次确定顺序。

本实施例提供的消息的排序方法,终端设备的某个应用程序在获取到新增消息时候,提取新增消息中的排序参数,输入对应的排序公式得到该新增消息对应的排序数值,然后根据该排序数值和排序数值列表中其他消息的排序数值,确定该新增消息与其他消息的位置关系,在显示时按照确定的位置进行显示,具体的排序参数可以灵活设置,将排序算法抽象为公式进行排序,解除业务之间的强耦合的,使得对消息的排序更加灵活,提高用户体验。

图2为本发明实施例提供的消息的排序方法实施例二的流程图,在上述方案的基础上,s101中的在获取到新增消息时,提取所述新增消息中的排序参数可以具体实现为:

s1011:在获取到新增消息时,根据所述新增消息的类型选择对应的消息适配器,通过所述消息适配器提取所述新增消息的排序参数。

该方案中,为了能够将消息的排序抽象为公式进行排序,本方案中针对通类型的消息添加了不同的适配器,为了能够对不同类型消息以不同的参数进行灵活处理。

在终端设备获取到一个新增消息时,首先需要确定该新增消息的类型,消息的类型至少包括以下两种:即时通讯消息或者自定义消息;这里的即时通讯消息指的是其他用户通过客户端或者软件发送的聊天消息等类型的消息;自定义消息可以是公众号定期推送的消息,或者系统消息,或者app服务器推送的头条消息等。确定消息的类型之后,获取该类型对应的适配器,对该新增消息进行提取处理,获取排序参数。

此外,在上述s103之后,该方法还可以包括以下步骤:

s104:将所述新增消息对应的排序数值存储至所述排序数值列表中。

为了能够对所有的消息的顺序进行准确的排序处理,需要将每次计算得到的消息对应的排序数值进行存储,以便再次获取到消息时,可以根据该排序数值列表中的排序数值,确定消息的位置。

一种具体的实现方式中,排序数值列表中可包括多个消息与对应的排序数值的对应关系,且所述排序数值列表中的多个消息按照排序数值由大到小或者由小到大的顺序排列;排序数值大的消息的排序优先级高于排序数值小的消息的排序优先级,即排序数值大的消息位置更靠前。

可选的,也可以是排序数值大的消息的排序优先级低于排序数值小的消息的排序优先级,即排序数值大的消息位置更靠后,对此本方案不做限制,可根据应用程序的具体实现进行配置。

可选的,在用户已经浏览某消息,并删除消息之后,因为不用再考虑该条消息的顺序,则可在删除消息之后,将排序数值列表中的该消息对应的排序数值删除。

本实施例提供的消息的排序方法,通过将消息抽象成数值进行排序,实现灵活控制消息的排列顺序,使消息的排列顺序不受消息类型的限制,方便新增消息类型,提高用户体验。

在上述两个实施例的基础上,下面以58客户端为例对本方案提供的消息的排序方法进行说明,其涉及到的消息包括im消息或者网站推送的头条消息等自定义消息。

图3为本发明实施例提供的消息的排序方法一实例的流程图,如图3所示,该消息的排序方法具体包括以下几个步骤:

1、取得消息列表数据

读取所有需要展示的消息数据,即图中待排序的消息包括im消息,自定义消息1和自定义消息2三个消息。

2、获取每个消息的排序数值

分别按照各自的类型适配不同的适配器,获取各自的排序参数。

这里可以按照消息类型,定义一个适配器,专门用于从相应类型的消息中提取排序参数。如此,本步骤中,每条消息根据其消息类型找到对应的适配器类,使用该适配器将消息数据提取出排序参数。

在本步骤中,需要为未知消息类型定义一个通用适配器。一方面防止异常数据引起崩溃,另一方面,对新增的消息类型,可以按照固定的格式进行转换。

3、依次导入排序公式得到排序数值列表(相当于排序优先级列表)

根据各个消息对应的排序公式采用各自的排序参数计算得到每个消息的排序数值。

将2中得到的排序参数列表依次传入到排序公式中,计算结果,得到优先级列表。优先级列表是一个与消息列表对应的数值型列表,每一个数值代表相应的消息在最终排序后的消息列表中的顺序优先级。

4、根据排序数值确定消息排序的优先级,最后使用优先级对消息进行排序并返回排序结果。

下面使用最常用的时间戳和消息优先级两个指标作为排序指标为例,给出一套简单可用的排序公式和对应的适配器。

排序公式封装在一个方法内,该方法接收两个数值型参数,返回一个数值。公式:result=[消息优先级]*1000+[时间戳],对应的方法代码如下:

其中,param1为消息优先级,param2为时间戳。这里消息优先级的定义和时间戳的基准时间、单位需要与适配器协调好。公式中的1000是权重,为了平衡消息优先级与时间戳对排序结果产生的影响而设置。

上文中提到的现有方案一,实际对应的公式为:result=param1*0+param2;现有方案二对应的公式为:result=param1*[足够大的数]+param2(足够大的数目的是使param1对结果产生的任何影响都大于param2,达到先按消息优先级排序,优先级相等时再按时间排序的目的)。

下面介绍上述公式对应适配器的具体实现。适配器需要将原消息中的时间戳和消息类型等转化为排序公式需要的输入参数。在实际应用中,上面介绍的流程第2和第3步可以合并为一步,在将消息转换为排序公式输入参数后直接计算公式输出的结果,减少一次遍历。依据这个思路,给出上述公式对应的适配器的代码:

本方案提供一种更加灵活的消息的排序方法,可以使用非母性关系,使得排序更加灵活多变,并且可以根据需要使用不同的指标进行排序。对于新增的消息类型,同样可以灵活地进行排序。

图4为本发明实施例提供的消息的排序装置实施例一的结构示意图,如图4所示,该消息的排序装置10包括:

第一处理模块11,用于在获取到新增消息时,提取所述新增消息中的排序参数;

第二处理模块12,用于获取与所述排序参数对应的排序公式,并将所述排序参数输入所述排序公式计算得到所述新增消息对应的排序数值;

第三处理模块13,用于将所述排序数值与排序数值列表中其他消息的排序数值进行对比,确定所述新增消息与其他消息的位置关系,并根据所述新增消息与其他消息的位置关系将所述新增消息进行展示。

本实施例提供的消息的排序装置,用于执行前述方法实施例中的技术方案,其实现原理和技术效果类似,在此不再赘述。

图5为本发明实施例提供的消息的排序装置实施例二的结构示意图,如图5所示,在该消息的排序装置10的具体实现中,还包括:

存储模块14,用于将所述新增消息对应的排序数值存储至所述排序数值列表中。

在上述任一实施例的基础上,所述新增消息的类型为即时通讯消息或者自定义消息。

可选的,所述第一处理模块11具体用于:

在获取到新增消息时,根据所述新增消息的类型选择对应的消息适配器,通过所述消息适配器提取所述新增消息的排序参数。

可选的,所述排序数值列表中包括多个消息与对应的排序数值的对应关系,且所述排序数值列表中的多个消息按照排序数值由大到小或者由小到大的顺序排列;排序数值大的消息的排序优先级高于排序数值小的消息的排序优先级。

上述各实施例提供的消息的排序装置,用于执行前述方法实施例中的技术方案,其实现原理和技术效果类似,在此不再赘述。

前述的消息的排序装置的具体实现中,发送模块可以实现为发送器、接收器可以实现为接收器、处理模块可以实现为处理器,在对排序后的消息进行展示时,可通过显示器显示,另外存储模块可实现为存储器,还用于存储程序指令和参数的存储器。

在上述方案涉及到的终端设备的具体实现中,还可包括计算机程序和存储器,所述计算机程序存储在所述存储器中,所述处理器运行所述计算机程序执行上述的消息的排序方法。处理器的数量为至少一个,用来执行存储器存储的执行指令,即计算机程序。使得终端设备与服务器通过通信接口进行数据交互,来执行上述各方面的各种实施方式提供的消息的排序方法,可选的,存储器还可以集成在处理器内部。

本申请还提供一种存储介质,包括:可读存储介质和计算机程序,所述计算机程序用于实现上述消息的排序方法。

本申请还提供一种程序产品,该程序产品包括计算机程序(即执行指令),该计算机程序存储在可读存储介质中。终端设备的至少一个处理器可以从可读存储介质读取该计算机程序,至少一个处理器执行该计算机程序使得终端设备实施前述任一实施方式提供的消息的排序方法。

在上述终端设备的任一种具体实现中,应理解,处理器可以是中央处理单元(英文:centralprocessingunit,简称:cpu),还可以是其他通用处理器、数字信号处理器(英文:digitalsignalprocessor,简称:dsp)、专用集成电路(英文:applicationspecificintegratedcircuit,简称:asic)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:只读存储器(英文:read-onlymemory,缩写:rom)、ram、快闪存储器、硬盘、固态硬盘、磁带(英文:magnetictape)、软盘(英文:floppydisk)、光盘(英文:opticaldisc)及其任意组合。

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

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