媒体信息的获取方法、装置、电子设备及存储介质与流程

文档序号:25583132发布日期:2021-06-22 16:29阅读:196来源:国知局
媒体信息的获取方法、装置、电子设备及存储介质与流程

本申请涉及互联网和区块链技术领域,尤其涉及一种媒体信息的获取方法、装置、电子设备及存储介质。



背景技术:

在信息流推荐场景中,基于社交关系的推荐由于其可解释性强,内容丰富多样的特点越来越受到重视。相关技术中,当存在好友针对媒体信息执行交互行为时,将交互行为对应的媒体信息的内容进行存储,进而存储每个好友执行过交互行为的媒体信息的内容,以在基于社交关系推荐时,读取存储的媒体信息并推荐给用户。而在好友数量较多且交互行为频繁时,需要存储的数据将会非常大,存储成本高;且在进行推荐时,读取存储的内容所需的耗时也会相应增加,导致推荐的即时性差。



技术实现要素:

本申请实施例提供一种媒体信息的获取方法、装置、电子设备及存储介质,能够节省存储成本,提高媒体信息的查询效率,保证信息推荐的即时性。

本申请实施例的技术方案是这样实现的:

本申请实施例提供一种媒体信息的获取方法,包括:

获取目标对象对应的媒体信息的交互时间记录;

其中,所述交互时间记录,用于记录与所述目标对象存在社交关系的社交对象执行针对媒体信息的交互行为时,所对应的交互时间;

基于所述交互时间记录,确定在目标时间段内执行有针对媒体信息的交互行为的目标社交对象;

获取所述目标社交对象的交互历史记录,所述交互历史记录,用于记录相应目标社交对象执行过所述交互行为的目标媒体信息;

基于所述交互历史记录,获取所述目标媒体信息,所述目标媒体信息,用于推荐至所述目标对象对应的终端。

本申请实施例还提供一种媒体信息的获取装置,包括:

第一获取模块,用于获取目标对象对应的媒体信息的交互时间记录;

其中,所述交互时间记录,用于记录与所述目标对象存在社交关系的社交对象执行针对媒体信息的交互行为时,所对应的交互时间;

确定模块,用于基于所述交互时间记录,确定在目标时间段内执行有针对媒体信息的交互行为的目标社交对象;

第二获取模块,用于获取所述目标社交对象的交互历史记录,所述交互历史记录,用于记录相应目标社交对象执行过所述交互行为的目标媒体信息;

第三获取模块,用于基于所述交互历史记录,获取所述目标媒体信息,所述目标媒体信息,用于推荐至所述目标对象对应的终端。

上述方案中,所述第一获取模块,还用于当检测到与所述目标对象存在社交关系的第一社交对象执行针对第一媒体信息的交互行为时,获取所述交互时间记录中对应所述第一社交对象的交互时间,并

获取执行针对第一媒体信息的交互行为的时间与所述交互时间记录中对应所述第一社交对象的交互时间的时间间隔;

当所述时间间隔达到时间间隔阈值时,根据执行针对第一媒体信息的交互行为的时间,更新所述交互时间记录中对应所述第一社交对象的交互时间。

上述方案中,所述第一获取模块,还用于当检测到所述目标对象执行针对第二媒体信息的交互行为时,获取第二社交对象所对应的目标交互时间记录中对应所述目标对象的交互时间,其中,所述第二社交对象与所述目标对象存在社交关系;

获取执行针对第二媒体信息的交互行为的时间与所述目标交互时间记录中对应所述目标对象的交互时间的时间间隔;

当所述时间间隔达到时间间隔阈值时,根据执行针对第二媒体信息的交互行为的时间,更新所述目标交互时间记录中对应所述目标对象的交互时间。

上述方案中,所述装置还包括:

存储模块,用于存储第一时间段内所述社交对象的交互历史记录至本地数据库,并

生成对应所述社交对象的远程存储任务;

其中,所述远程存储任务,用于指示将所述本地数据库中存储的第一时间段内所述社交对象的交互历史记录存储于远程数据库中。

上述方案中,所述存储模块,还用于基于有状态协议,建立与所述社交对象对应的终端之间的通信连接;

通过所述通信连接,接收所述终端在所述第一时间段内发送的所述社交对象的交互历史记录;

将所述第一时间段内所述社交对象的交互历史记录存储至本地数据库。

上述方案中,所述社交对象的数量为至少两个,每个所述社交对象对应一个所述远程存储任务,所述存储模块,还用于确定各所述远程存储任务对应的优先级分数;

将所述远程存储任务按照所述优先级分数进行排序,得到远程存储任务序列;

基于所述远程存储任务序列,按照优先级由高到低的顺序依次执行所述远程存储任务。

上述方案中,所述存储模块,还用于根据各所述社交对象对应所述第一时间段内的交互历史记录,获取各所述远程存储任务对应第一时间段内的媒体信息的数量;

获取各所述社交对象的交互历史记录中,交互时间最早的目标媒体信息所对应的交互时间戳;

基于获取的所述交互时间戳以及所述媒体信息的数量,确定各所述远程存储任务对应的优先级分数。

上述方案中,所述第二获取模块,还用于发送对应目标社交对象的交互历史记录的获取请求至远程数据库;

当所述目标社交对象为至少两个时,接收到所述远程数据库返回的各所述目标社交对象的交互历史记录列表;

将各所述目标社交对象的交互历史记录列表进行合并,得到所述交互历史记录。

上述方案中,所述存储模块,还用于存储所述社交对象的交互历史记录至区块链网络;

相应地,所述获取所述目标社交对象的交互历史记录,包括:

生成并发送用于获取区块链网络中目标社交对象的交互历史记录的交易;

接收所述区块链网络基于所述交易返回的所述目标社交对象的交互历史记录。

上述方案中,所述装置还包括:

推荐模块,用于响应于针对所述目标对象的媒体信息获取请求,获取所述目标对象的画像信息;

当所述目标媒体信息为至少两个时,从所述至少两个目标媒体信息中,筛选得到与所述目标对象的画像信息相匹配的目标推荐媒体信息;

将所述目标推荐媒体信息推荐至所述目标对象对应的终端。

上述方案中,所述推荐模块,还用于响应于针对所述目标对象的媒体信息获取请求,当所述目标媒体信息为至少两个时,获取各所述目标媒体信息对应的交互时间;

从所述至少两个目标媒体信息中,选择交互时间处于第二时间段内的目标媒体信息作为目标推荐媒体信息;

将所述目标推荐媒体信息推荐至所述目标对象对应的终端。

上述方案中,所述推荐模块,还用于生成对应所述目标媒体信息的提示信息,所述提示信息,用于提示相应的目标社交对象针对所述目标媒体信息执行过所述交互行为;

将携带所述提示信息的所述目标媒体信息,推荐至所述目标对象对应的终端,以使所述终端呈现所述目标媒体信息的同时呈现所述提示信息。

本申请实施例还提供一种电子设备,包括:

存储器,用于存储可执行指令;

处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的媒体信息的获取方法。

本申请实施例还提供一种计算机可读存储介质,存储有可执行指令,所述可执行指令被处理器执行时,实现本申请实施例提供的媒体信息的获取方法。

本申请实施例具有以下有益效果:

通过交互时间记录,记录与目标对象存在社交关系的社交对象执行针对媒体信息的交互行为时所对应的交互时间,进而在对目标对象进行基于社交关系的信息推荐时,基于时间交互记录确定在目标时间段内执行有针对媒体信息的交互行为的目标社交对象,从而在进行媒体信息推荐时,只需要获取目标社交对象的交互历史记录,然后根据目标社交对象的交互历史记录即可确定用于推荐的目标媒体信息。

相较于相关技术,本申请在存储时只需要存储社交对象执行针对媒体信息的交互行为时所对应的交互时间,从而降低了需要存储的数据量,节省了存储成本;且只需要读取目标时间段内的社交对象的交互历史记录即可确定用于推荐的媒体信息,从而提高了媒体信息的查询效率,保证了信息推荐的即时性。

附图说明

图1是本申请实施例提供的媒体信息的获取系统100的架构示意图;

图2是本申请实施例提供的媒体信息的获取方法的电子设备500的结构示意图;

图3是本申请实施例提供的媒体信息的获取方法的流程示意图;

图4是本申请实施例提供的交互时间记录的更新流程示意图;

图5是本申请实施例提供的交互历史记录的存储流程示意图;

图6是本申请实施例提供的交互历史记录的获取流程示意图;

图7是本申请实施例提供的媒体信息的呈现示意图;

图8是本申请实施例提供的区块链网络800的应用架构示意图;

图9是本申请实施例提供的区块链网络800中区块链的结构示意图;

图10是本申请实施例提供的区块链网络800的功能架构示意图;

图11是本申请实施例提供的媒体信息的获取方法的流程示意图;

图12是本申请实施例提供的目标对象在不同时间所交互的媒体信息的数量分布示意图;

图13是本申请实施例提供的媒体信息的获取装置555的结构示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。

除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。

对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。

1)签名,即数字签名,只有信息的发送者才能产生的、别人无法伪造的一段数字串,同时也是对信息的发送者发送信息真实性的有效证明;数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证,是非对称密钥加密技术与数字摘要技术的应用。

2)交易(transaction),等同于计算机术语“事务”,交易包括了需要提交到区块链网络执行的操作,并非单指商业语境中的交易,鉴于在区块链技术中约定俗成地使用了“交易”这一术语,本发明实施例遵循了这一习惯。

例如,部署(deploy)交易用于向区块链网络中的节点安装指定的智能合约并准备好被调用;调用(invoke)交易用于通过调用智能合约在区块链中追加交易的记录,并对区块链的状态数据库进行操作,包括更新操作(包括增加、删除和修改状态数据库中的键值对)和查询操作(即查询状态数据库中的键值对)。

3)区块链(blockchain),是由区块(block)形成的加密的、链式的交易的存储结构。

4)区块链网络(blockchainnetwork),通过共识的方式将新区块纳入区块链的一系列的节点的集合。

5)账本(ledger),是区块链(也称为账本数据)和与区块链同步的状态数据库的统称。其中,区块链是以文件系统中的文件的形式来记录交易;状态数据库是以不同类型的键(key)值(value)对的形式来记录区块链中的交易,用于支持对区块链中交易的快速查询。

6)智能合约(smartcontracts),也称为链码(chaincode)或应用代码,部署在区块链网络的节点中的程序,节点执行接收的交易中所调用的智能合约,来对状态数据库的键值对数据进行更新或查询的操作。

7)共识(consensus),是区块链网络中的一个过程,用于在涉及的多个节点之间对区块中的交易达成一致,达成一致的区块将被追加到区块链的尾部,实现共识的机制包括工作量证明(pow,proofofwork)、权益证明(pos,proofofstake)、股份授权证明(dpos,delegatedproof-of-stake)、消逝时间量证明(poet,proofofelapsedtime)等。

8)客户端,终端中运行的用于提供各种服务的应用程序,例如即时通讯客户端、视频播放客户端。

9)响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。

10)社交关系:是指2个或更多人类个体在网络上产生的任何关系,包括好友、关注等关系。

11)远程字典服务(redis,remotedictionaryserver):是一个开源免费的高性能key-value数据库,同时还提供list,set,zset,hash等数据结构的存储。

12)有状态协议,就是需要维护中间状态的协议,例如tcp协议。tcp协议在发送数据前需要建立连接,发送数据过程中需要保存状态,发送完成后需要断开连接。类似现实生活中的打电话。

基于上述对本申请实施例中涉及的名词和术语的解释,下面说明本申请实施例提供的媒体信息的获取系统。参见图1,图1是本申请实施例提供的媒体信息的获取系统100的架构示意图,为实现支撑一个示例性应用,终端(示例性示出了终端400-1和终端400-2)通过网络300连接服务器200,网络300可以是广域网或者局域网,又或者是二者的组合,使用无线或有线链路实现数据传输。

终端(如终端400-1和终端400-2),设置有用于查看媒体信息的应用客户端,用于响应于目标对象触发的媒体信息获取指令,发送针对目标对象的媒体信息获取请求至服务器200。

服务器200,用于获取目标对象对应的媒体信息的交互时间记录;基于交互时间记录,确定在目标时间段内执行有针对媒体信息的交互行为的目标社交对象;获取目标社交对象的交互历史记录;基于交互历史记录,获取目标媒体信息;将目标媒体信息推荐至目标对象对应的终端;

终端(如终端400-1和终端400-2),用于在图形界面410(示例性示出了图形界面410-1和图形界面410-2)呈现接收的服务器200推荐的目标媒体信息。

在实际应用中,服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。终端(如终端400-1和终端400-2)可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能电视、智能手表等,但并不局限于此。终端(如终端400-1和终端400-2)以及服务器200可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。

参见图2,图2是本申请实施例提供的媒体信息的获取方法的电子设备500的结构示意图。在实际应用中,电子设备500可以为图1示出的服务器或终端,以电子设备500为图1示出的服务器为例,对实施本申请实施例的媒体信息的获取方法的电子设备进行说明,本申请实施例提供的电子设备500包括:至少一个处理器510、存储器550、至少一个网络接口520和用户接口530。电子设备500中的各个组件通过总线系统540耦合在一起。可理解,总线系统540用于实现这些组件之间的连接通信。总线系统540除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统540。

处理器510可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(dsp,digitalsignalprocessor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。

用户接口530包括使得能够呈现媒体内容的一个或多个输出装置531,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口530还包括一个或多个输入装置532,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。

存储器550可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器550可选地包括在物理位置上远离处理器510的一个或多个存储设备。

存储器550包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(rom,readonlymemory),易失性存储器可以是随机存取存储器(ram,randomaccessmemory)。本申请实施例描述的存储器550旨在包括任意适合类型的存储器。

在一些实施例中,存储器550能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。

操作系统551,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;

网络通信模块552,用于经由一个或多个(有线或无线)网络接口520到达其他计算设备,示例性的网络接口520包括:蓝牙、无线相容性认证(wifi)、和通用串行总线(usb,universalserialbus)等;

呈现模块553,用于经由一个或多个与用户接口530相关联的输出装置531(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);

输入处理模块554,用于对一个或多个来自一个或多个输入装置532之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。

在一些实施例中,本申请实施例提供的媒体信息的获取装置可以采用软件方式实现,图2示出了存储在存储器550中的媒体信息的获取装置555,其可以是程序和插件等形式的软件,包括以下软件模块:第一获取模块5551、确定模块5552、第二获取模块5553和第三获取模块5554,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分,将在下文中说明各个模块的功能。

在另一些实施例中,本申请实施例提供的媒体信息的获取装置可以采用软硬件结合的方式实现,作为示例,本申请实施例提供的媒体信息的获取装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的媒体信息的获取方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(asic,applicationspecificintegratedcircuit)、dsp、可编程逻辑器件(pld,programmablelogicdevice)、复杂可编程逻辑器件(cpld,complexprogrammablelogicdevice)、现场可编程门阵列(fpga,field-programmablegatearray)或其他电子元件。

基于上述对本申请实施例提供的媒体信息的获取系统及电子设备的说明,下面说明本申请实施例提供的媒体信息的获取方法。在一些实施例中,本申请实施例提供的媒体信息的获取方法可由服务器或终端单独实施,或由服务器及终端协同实施,下面以服务器实施为例说明本申请实施例提供的媒体信息的获取方法。参见图3,图3是本申请实施例提供的媒体信息的获取方法的流程示意图,本申请实施例提供的媒体信息的获取方法包括:

步骤101:服务器获取目标对象对应的媒体信息的交互时间记录。

其中,该交互时间记录,用于记录与目标对象存在社交关系的社交对象执行针对媒体信息的交互行为时,所对应的交互时间。

这里,在一些实施例中,该服务器可以是用于媒体信息推荐的推荐服务器。在实际应用中,用户可通过设置有媒体信息推荐客户端的终端,浏览所推荐的媒体信息。具体地,终端响应于用户触发的媒体信息获取指令(比如通过刷新页面等操作触发的),向推荐服务器发送媒体信息获取请求,推荐服务器响应于该媒体信息获取请求,返回基于推荐策略确定的推荐媒体信息至用户的终端,以供用户查看推荐的媒体信息。该媒体信息可以通过媒体信息流的方式呈现,以给予用户良好的浏览体验。

在另外一些实施例中,该服务器还可以是用于查询并获取目标对象的交互时间记录的查询服务器。在实际应用中,用户可通过设置有媒体信息推荐客户端的终端,浏览所推荐的媒体信息。具体地,终端响应于用户触发的媒体信息获取指令(比如通过刷新页面等操作触发的),向推荐服务器发送媒体信息获取请求,推荐服务器响应于该媒体信息获取请求,通过查询服务器查询并获取用于推荐的推荐媒体信息,从而将查询服务器查询并返回的推荐媒体信息推荐至用户的终端,以供用户查看推荐的媒体信息。该媒体信息可以通过媒体信息流的方式呈现,以给予用户良好的浏览体验。

基于此,在本申请实施例中,服务器在进行媒体信息推荐时,首先获取目标对象对应的媒体信息的交互时间记录,从而基于交互时间记录确定出向目标对象进行推荐的媒体信息。这里,该交互时间记录,用于记录与目标对象存在社交关系的社交对象执行针对媒体信息的交互行为时,所对应的交互时间(具体可以是交互的时间点)。那么基于交互时间记录确定出向目标对象进行推荐的媒体信息,比如可以是确定交互时间记录中处于预设时间段内的交互行为对应的媒体信息为用于推荐的媒体信息。其中,社交关系可以是好友关系、关注关系等;媒体信息可以是视频、文章、音乐等,相应的交互行为可以是文章阅读行为、视频观看行为、音乐收听行为等。如此,则可以实现根据目标对象的社交关系进行媒体信息推荐的目的,给用户营造一种社交社区的氛围,提高用户体验,增加推荐系统的用户粘性。

在一些实施例中,服务器可通过如下方式更新目标对象的交互时间记录:当检测到与目标对象存在社交关系的第一社交对象执行针对第一媒体信息的交互行为时,获取交互时间记录中对应第一社交对象的交互时间,并获取执行针对第一媒体信息的交互行为的时间与交互时间记录中对应第一社交对象的交互时间的时间间隔;当时间间隔达到时间间隔阈值时,根据执行针对第一媒体信息的交互行为的时间,更新交互时间记录中对应第一社交对象的交互时间。

在实际应用中,针对目标对象设置有一个用于记录与目标对象存在社交关系的社交对象执行针对媒体信息的交互行为时,所对应的交互时间的交互时间记录,该交互时间记录根据社交对象执行针对媒体信息的交互行为发生的交互时间进行更新。

以社交对象为第一社交对象为例对目标对象的交互时间记录的更新进行说明,该第一社交对象与目标对象之间存在社交关系(比如好友关系、关注关系),为至少一个。当服务器检测到第一社交对象执行针对第一媒体信息的交互行为时,获取当前交互时间记录中记录的对应第一社交对象的交互时间;然后,获取执行针对第一媒体信息的交互行为的时间与交互时间记录中记录的对应第一社交对象的交互时间的时间间隔。同时还可以预先设置时间间隔阈值(比如1天),当确定时间间隔达到时间间隔阈值时,根据执行针对第一媒体信息的交互行为的时间,更新交互时间记录中对应第一社交对象的交互时间。

具体地,可以将执行针对第一媒体信息的交互行为的时间进一步记录于目标对象的交互时间记录中,以保证目标对象的交互时间记录中记录有第一社交对象每次执行针对第一媒体信息的交互行为的时间;还可以将交互时间记录中记录的对应第一社交对象的交互时间替换为执行针对第一媒体信息的交互行为的时间,以保证目标对象的交互时间记录中记录有第一社交对象最近执行针对第一媒体信息的交互行为的时间。

在一些实施例中,服务器可通过如下方式更新社交对象的交互时间记录:当检测到目标对象执行针对第二媒体信息的交互行为时,获取第二社交对象所对应的目标交互时间记录中对应目标对象的交互时间;获取执行针对第二媒体信息的交互行为的时间与目标交互时间记录中对应目标对象的交互时间的时间间隔;当时间间隔达到时间间隔阈值时,根据执行针对第二媒体信息的交互行为的时间,更新目标交互时间记录中对应目标对象的交互时间。其中,该第二社交对象与目标对象存在社交关系。

在实际应用中,目标对象执行针对第二媒体信息的交互行为的交互时间,也会记录于社交对象对应的目标交互时间记录。如此,对于服务器来说,针对每个用户,均维护了一个交互时间记录,以用于记录与该用户存在社交关系的社交对象执行针对媒体信息的交互行为时,所对应的交互时间。

这里,对第二社交对象的目标交互时间记录的更新进行说明,该第二社交对象与目标对象之间存在社交关系(比如好友关系、关注关系),为至少一个。当服务器检测到目标对象执行针对第二媒体信息的交互行为时,获取第二社交对象所对应的目标交互时间记录中记录的对应目标对象的交互时间;然后获取执行针对第二媒体信息的交互行为的时间与目标交互时间记录中对应目标对象的交互时间的时间间隔。同时这里也可以预先设置时间间隔阈值(比如1天),当确定时间间隔达到时间间隔阈值时,根据执行针对第二媒体信息的交互行为的时间,更新目标交互时间记录中对应目标对象的交互时间。

具体地,可以将执行针对第二媒体信息的交互行为的时间进一步记录于各个第二社交对象的目标交互时间记录中,以保证各个第二社交对象的目标交互时间记录中记录有目标对象每次执行针对第二媒体信息的交互行为的时间;还可以将各个第二社交对象的目标交互时间记录中记录的对应目标对象的交互时间替换为执行针对第二媒体信息的交互行为的时间,以保证各个第二社交对象的交互时间记录中记录有目标对象最近执行针对第二媒体信息的交互行为的时间。

如此,在对用户进行媒体信息推荐时,则可以根据每个用户对应的交互时间记录确定出向相应用户进行推荐的媒体信息,实现根据用户的社交关系进行媒体信息推荐的目的,给用户营造一种社交社区的氛围。

参见图4,图4是本申请实施例提供的交互时间记录的更新流程示意图。这里,描述了每个用户对应的交互时间记录(即用户的更新时间接收队列)的更新流程,包括:

步骤401,检测到用户针对媒体信息的交互行为(比如阅读行为);

步骤402,获取用户上一次的写扩散时间;

即获取与用户存在社交关系的社交对象对应的交互时间记录中记录的上一次执行交互行为的交互时间,即为用户上一次的写扩散时间。

步骤403,判断是否需要写扩散,若需要则执行步骤404,若不需要,则执行步骤407;

即判断是否需要将此次检测到的用户针对媒体信息的交互行为的交互时间记录于社交对象的交互时间记录中,具体地可以根据预先设置的时间间隔阈值(比如1天)判断,当检测到的用户针对媒体信息的交互行为的交互时间与交互时间记录中记录的上一次执行交互行为的交互时间之间的时间间隔大于时间间隔阈值,则需要,此时执行步骤404,若时间间隔小于时间间隔阈值,则不需要,此时执行步骤407。

步骤404,更新用户的写扩散时间;

即更新用户的写扩散时间为检测到的用户针对媒体信息的交互行为的交互时间,因为如果需要写扩散时,则将检测到的用户针对媒体信息的交互行为的交互时间记录于各社交对象的交互时间记录中。

步骤405,拉取与用户存在社交关系的社交对象的对象列表;

即当该社交关系为好友关系时,则可以直接拉取用户的好友列表。

步骤406,将检测到的用户针对媒体信息的交互行为的交互时间,写入好友的更新时间接收队列;

步骤407,结束。

步骤102:基于交互时间记录,确定在目标时间段内执行有针对媒体信息的交互行为的目标社交对象。

这里,在实际应用中,可以预先设置目标时间段,比如距离当前日期的近期3天内。然后根据目标对象的交互时间记录,确定在目标时间段内执行过针对媒体信息的交互行为的目标社交对象,比如确定在近期3天内有过阅读文章行为的好友。

步骤103:获取目标社交对象的交互历史记录。

其中,该交互历史记录,用于记录相应目标社交对象执行过交互行为的目标媒体信息。

这里,在确定目标时间段内执行过针对媒体信息的交互行为的目标社交对象后,获取目标社交对象的交互历史记录,该交互历史记录中记录有目标社交对象执行过交互行为的目标媒体信息,比如该交互历史记录可以是社交对象1-媒体信息id1、社交对象2-媒体信息id2、社交对象3-媒体信息id3等。

在一些实施例中,服务器可通过如下方式存储交互历史记录:存储第一时间段内社交对象的交互历史记录至本地数据库,并生成对应社交对象的远程存储任务;其中,该远程存储任务,用于指示将本地数据库中存储的第一时间段内社交对象的交互历史记录存储于远程数据库中。

这里,服务器需要存储每个用户的交互历史记录,这里,用户包括社交对象和目标对象。服务器在存储用户针对媒体信息的交互历史记录时,可以首先将用户在一段时间内的交互历史记录存储于本地数据库,然后再将本地数据库中的一段时间内的交互历史记录存储于远程数据库中,降低用户交互历史记录的线上写入冲突,提高写入成功率。

具体地,以用户为社交对象为例进行说明。可以预先设置存入本地数据库的第一时间段,比如1天或者0.5天等。然后将第一时间段内的社交对象的交互历史记录存储至本地数据库;同时生成对应社交对象的远程存储任务,该远程存储任务用于指示将本地数据库中存储的第一时间段内社交对象的交互历史记录存储于远程数据库中。

在一些实施例中,服务器可通过如下方式存储第一时间段内社交对象的交互历史记录至本地数据库:基于有状态协议,建立与社交对象对应的终端之间的通信连接;通过通信连接,接收终端在第一时间段内发送的社交对象的交互历史记录;将第一时间段内社交对象的交互历史记录存储至本地数据库。

这里,为避免用户的媒体信息交互历史记录的存储请求落在不同机器上导致存储聚合效率受到影响的情况出现,在本地存储的过程中,服务器基于有状态协议,建立与社交对象对应的终端之间的通信连接,以保持通信连接的持续。从而通过该通信连接,接收终端在第一时间段内上传的社交对象的交互历史记录,即社交对象每执行一次针对媒体信息的交互行为,则终端上传一次社交对象的交互历史记录。如此,服务器接收到第一时间段内上传的社交对象的交互历史记录,将第一时间段内社交对象的交互历史记录存储至本地数据库,具体地,服务器可以是在第一时间段内,每接收到一条交互历史记录则将该单条交互历史记录存储至本地数据库。

在一些实施例中,当社交对象的数量为至少两个、且每个社交对象对应一个远程存储任务时,服务器可通过如下方式执行远程存储任务:确定各远程存储任务对应的优先级分数;将远程存储任务按照优先级分数进行排序,得到远程存储任务序列;基于远程存储任务序列,按照优先级由高到低的顺序依次执行远程存储任务。

在将第一时间段内的社交对象的交互历史记录存储到本地数据库中后,服务器继续执行针对每个社交对象生成的远程存储任务,即将本地数据库中存储的第一时间段内社交对象的交互历史记录存储于远程数据库中。

具体地,服务器可以确定每个远程存储任务对应的优先级分数,然后将远程存储任务按照优先级分数进行排序,得到远程存储任务序列,从而按照远程存储序列中,优先级由高到低的顺序依次执行远程存储任务。在实际应用中,该每个远程存储任务的优先级分数的计算方式可以根据需要设置,比如可以按照交互历史记录所记录的时间的早晚、所涉及的媒体信息的数量等变量来确定。该优先级分数对应的优先级可以是优先级分数越高,对应的优先级越高,还可以是优先级分数越低,对应的优先级越高,具体采用何种优先级分数和优先级的对应方式,根据优先级分数的计算方式确定。

在一些实施例中,服务器可通过如下方式确定各远程存储任务对应的优先级分数:根据各社交对象对应第一时间段内的交互历史记录,获取各远程存储任务对应第一时间段内的媒体信息的数量;获取各社交对象的交互历史记录中,交互时间最早的目标媒体信息所对应的交互时间戳;基于获取的交互时间戳以及媒体信息的数量,确定各远程存储任务对应的优先级分数。

在实际应用中,各远程存储任务对应的优先级分数可以根据各远程存储任务对应第一时间段内的媒体信息的数量、以及各社交对象的交互历史记录中,交互时间最早的目标媒体信息所对应的交互时间戳确定。在实际实施时,可通过如下公式进行优先级分数的计算:score(user_id)=first_timestamp-10*n,其中,first_stamp为交互时间最早的目标媒体信息所对应的交互时间戳,n为第一时间段内的媒体信息的数量,score(user_id)为远程存储任务对应的优先级分数。

这里,在实际实施时,基于上述公式得到的优先级分数所对应的优先级为:优先级分数越低,优先级越高。基于此,可以将远程存储任务加入优先级分数越低,优先级越高的优先级调度队列中,进而服务器基于该优先级调度队列依次执行远程存储任务。

参见图5,图5是本申请实施例提供的交互历史记录的存储流程示意图。这里,步骤501,在第一时间段内,终端检测到用户针对媒体信息执行交互行为时,上报单条交互历史记录(如阅读记录)至服务器;步骤502,服务器在本地数据库中存储单条交互历史记录(如阅读记录);步骤503,生成远程存储任务并确定各远程存储任务的优先级分数;步骤504,将各远程存储任务加入优先级调度队列,基于优先级调度策略,将第一时间段内的多条交互历史记录存储至远程数据库。

基于此,在一些实施例中,服务器可通过如下方式获取目标社交对象的交互历史记录:发送对应目标社交对象的交互历史记录的获取请求至远程数据库;当目标社交对象为至少两个时,接收到远程数据库返回的各目标社交对象的交互历史记录列表;将各目标社交对象的交互历史记录列表进行合并,得到交互历史记录。

在实际应用中,服务器在获取目标社交对象的交互历史记录时,则可以从远程数据库中获取。具体地,服务器发送目标社交对象的交互历史记录的获取请求至远程数据库,具体是发送获取请求至远程数据库所在的服务器。该远程数据库所在的服务器查找到目标社交对象的交互历史记录后,如果该目标社交对象为多个时,则返回各目标社交对象的交互历史记录列表至服务器。服务器接收到各目标社交对象的交互历史记录列表后,可以对交互历史记录列表进行合并,得到目标社交对象的交互历史记录。

参见图6,图6是本申请实施例提供的交互历史记录的获取流程示意图。这里,描述的是用户在请求媒体信息时,服务器获取社交对象的交互历史记录的流程,包括:

步骤601,接收到用户的媒体信息获取请求;

步骤602,获取并读取用户对应的更新时间接收队列;

即读取用户对应的交互时间记录。

步骤603,确定目标时间段内存在交互行为的目标社交对象;

即确定在预设的目标时间段内,有过媒体信息阅读行为的好友列表。

步骤604,获取每个目标社交对象对应的交互历史记录列表;

即针对有过媒体信息阅读行为的好友列表中的每个好友,获取该好友对应的阅读历史列表,包括读取好友1阅读历史列表、好友2阅读历史列表……好友m阅读历史列表等。

步骤605,将每个目标社交对象对应的交互历史记录列表进行合并,得到目标时间段内存在交互行为的目标社交对象的所有交互历史记录。

这里,在得到目标时间段内存在交互行为的目标社交对象的所有交互历史记录后,从交互历史记录中获取到目标社交对象执行过交互行为的目标媒体信息,从而将目标媒体信息推荐至用户的终端,以实现基于社交关系的信息推荐。

步骤104:基于交互历史记录,获取目标媒体信息。

其中,该目标媒体信息,用于推荐至目标对象对应的终端。

这里,在实际应用中,交互历史记录中记录了各个目标社交对象执行过交互行为的目标媒体信息,因此服务器在获取到目标社交对象的交互历史记录后,可以根据交互历史记录,获取各个目标社交对象执行过交互行为的至少一个目标媒体信息。

在一些实施例中,服务器可通过如下方式推荐目标媒体信息至目标对象:响应于针对目标对象的媒体信息获取请求,获取目标对象的画像信息;当目标媒体信息为至少两个时,从至少两个目标媒体信息中,筛选得到与目标对象的画像信息相匹配的目标推荐媒体信息;将目标推荐媒体信息推荐至目标对象对应的终端。

这里,在实际应用中,服务器获取到目标媒体信息后,在将目标媒体信息推荐至目标对象时,还可以对获取的目标媒体信息进行筛选。具体地,可以根据目标对象的画像信息进行筛选:当接收到目标对象通过终端设置的媒体信息推荐客户端触发的媒体信息获取请求时,如果获取的目标媒体信息为至少两个时,则获取目标对象的画像信息,比如目标对象的基础信息(包括用户标识、年龄、性别等)、行为信息(浏览、收藏、转发等)、兴趣标签、最近有过交流的社交对象等。然后根据目标对象的画像信息,从获取的至少两个目标媒体信息中,选择与目标对象的画像信息相匹配的目标推荐媒体信息,从而将目标推荐媒体信息推荐至目标对象对应的终端。

在一些实施例中,服务器可通过如下方式推荐目标媒体信息至目标对象:响应于针对目标对象的媒体信息获取请求,当目标媒体信息为至少两个时,获取各目标媒体信息对应的交互时间;从至少两个目标媒体信息中,选择交互时间处于第二时间段内的目标媒体信息作为目标推荐媒体信息;将目标推荐媒体信息推荐至目标对象对应的终端。

这里,在实际应用中,服务器获取到目标媒体信息后,在将目标媒体信息推荐至目标对象时,还可以对获取的目标媒体信息进行筛选。具体地,可以根据各目标媒体信息对应的交互时间进行筛选:当接收到目标对象通过终端设置的媒体信息推荐客户端触发的媒体信息获取请求时,如果获取的目标媒体信息为至少两个时,则获取各目标媒体信息对应的交互时间,即社交对象针对目标媒体信息执行过交互行为的时间,具体可以从目标对象对应的交互时间记录中获取。然后预先设置用于媒体信息筛选的第二时间段,比如距离当前日期的近期3天内,从而在获取的至少两个目标媒体信息中,选择交互时间处于第二时间段内的目标媒体信息作为目标推荐媒体信息,从而将目标推荐媒体信息推荐至目标对象对应的终端。

在一些实施例中,服务器可通过如下方式推荐目标媒体信息至目标对象:生成对应目标媒体信息的提示信息;将携带提示信息的目标媒体信息,推荐至目标对象对应的终端,以使终端呈现目标媒体信息的同时呈现提示信息。其中,该提示信息,用于提示相应的目标社交对象针对目标媒体信息执行过交互行为。

在实际应用中,服务器在将目标媒体信息推荐至目标对象的终端时,还生成针对目标媒体信息的提示信息,该提示信息用于提示相应的目标社交对象针对目标媒体信息执行过交互行为。从而将携带提示信息的目标媒体信息推荐至目标对象对应的终端,以使得终端呈现目标媒体信息的同时呈现提示信息。作为示例,参见图7,图7是本申请实施例提供的媒体信息的呈现示意图。这里,将用户a看过的视频“3分钟看完,物理学中最诡异的量子纠缠现象,可能颠覆你的世界观”推荐至用户b,该用户b和用户a为好友关系,此时在用户b的终端的视图界面中,呈现该视频3分钟看完,物理学中最诡异的量子纠缠现象,可能颠覆你的世界观”,同时呈现“好友在看”的提示信息,以提示用户b其好友用户a看过该视频“3分钟看完,物理学中最诡异的量子纠缠现象,可能颠覆你的世界观”。从而为用户营造一种社区的氛围。

在一些实施例中,服务器还可通过如下方式存储交互历史记录:存储社交对象的交互历史记录至区块链网络;相应地,服务器可通过如下方式获取目标社交对象的交互历史记录:生成并发送用于获取区块链网络中目标社交对象的交互历史记录的交易;接收区块链网络基于交易返回的目标社交对象的交互历史记录。

这里,服务器还可以结合区块链技术,将社交对象的交互历史记录存储至区块链网络中,以使服务器在获取目标对象的交互历史记录时,能够直接从区块链网络中获取到社交对象的交互历史记录。

在实际应用中,服务器在接收到终端上传的社交对象的交互历史记录后,生成用于存储社交对象的交互历史记录的交易,并发送生成的交易至区块链网络的节点,以使节点对交易共识后将社交对象的交互历史记录存储至区块链网络;在存储至区块链网络之前,服务器还可获取社交对象的交互历史记录对应的密钥的摘要信息;将得到的密钥的摘要信息存储至区块链网络。

接下来对本发明实施例中的区块链网络进行说明。图8为本发明实施例提供的区块链网络的应用架构示意图,包括区块链网络800(示例性示出了共识节点810,如共识节点810-1至共识节点810-3)、认证中心900、业务主体1000,下面分别说明。

区块链网络800的类型是灵活多样的,例如可以为公有链、私有链或联盟链中的任意一种。以公有链为例,任何业务主体的电子设备(例如终端/服务器),都可以在不需要授权的情况下接入区块链网络800;以联盟链为例,业务主体在获得授权后其下辖的电子设备可以接入区块链网络800。如此,成为区块链网络800中的客户端节点。

在一些实施例中,客户端节点可以只作为区块链网络800的观察者,即提供支持业务主体发起交易(例如,用于上链存储数据或查询链上数据)功能,对于区块链网络800的共识节点810的功能,例如排序功能、共识服务和账本功能等,客户端节点可以缺省或者有选择性(例如,取决于业务主体的具体业务需求)地实施。从而,可以将业务主体的数据和业务处理逻辑最大程度迁移到区块链网络800中,通过区块链网络800实现数据和业务处理过程的可信和可追溯。

区块链网络800中的共识节点接收来自不同业务主体(如业务主体1000)的客户端节点(如归属于业务主体1000的客户端节点1010)提交的交易,执行交易以更新账本或者查询账本,执行交易的各种中间结果或最终结果可以返回至业务主体的客户端节点中显示。

下面以业务主体接入区块链网络以实现社交对象的交互历史记录的获取为例说明区块链的示例性应用。

参见图8,数据报文的传输方法涉及的业务主体1000,从认证中心900进行登记注册获得数字证书,数字证书中包括业务主体的公钥、以及认证中心900对业务主体的公钥和身份信息签署的数字签名,用来与业务主体针对交易的数字签名一起附加到交易中,并被发送到区块链网络,以供区块链网络从交易中取出数字证书和签名,验证消息的可靠性(即是否未经篡改)和发送消息的业务主体的身份信息,区块链网络会根据身份进行验证,例如是否具有发起交易的权限。业务主体下辖的电子设备(例如终端或者服务器)运行的客户端都可以向区块链网络800请求接入而成为客户端节点。

首先,业务主体1000的客户端节点1010在获取社交对象的交互历史记录时,生成用于获取区块链中存储的社交对象的交互历史记录的交易,在交易中指定了实现社交对象的交互历史记录的获取操作需要调用的智能合约、以及向智能合约传递的参数,交易还携带了客户端节点1010的数字证书、签署的数字签名(例如,使用客户端节点1010的数字证书中的私钥,对交易的摘要进行加密得到),并将交易广播到区块链网络800中的共识节点。

然后,区块链网络800的共识节点810接收到交易时,对交易携带的数字证书和数字签名进行验证,验证成功后,根据交易中携带的业务主体1000的身份,确认业务主体1000是否是具有交易权限,数字签名和权限验证中的任何一个验证判断都将导致交易失败。验证成功后签署共识节点810自己的数字签名(例如,使用节点810-1的私钥对交易的摘要进行加密得到),并继续在区块链网络800中广播。

最后,区块链网络800中的共识节点810接收到验证成功的交易后,将交易填充到新的区块中,并进行广播。区块链网络800中的共识节点810在广播新区块时,会对新区块进行共识过程,如果共识成功,则将新区块追加到自身所存储的区块链的尾部,并根据交易的结果更新状态数据库,执行新区块中的交易:对于提交的获取社交对象的交互历史记录的交易,从状态数据库中查询社交对象的交互历史记录对应的键值对,并返回交易结果。

作为区块链的示例,参见图9,图9是本发明实施例提供的区块链网络800中区块链的结构示意图,每个区块的头部既可以包括区块中所有交易的哈希值,同时也包含前一个区块中所有交易的哈希值,新产生的交易的记录被填充到区块并经过区块链网络中节点的共识后,会被追加到区块链的尾部从而形成链式的增长,区块之间基于哈希值的链式结构保证了区块中交易的防篡改和防伪造。

下面说明本发明实施例提供的区块链网络的示例性的功能架构,参见图10,图10是本发明实施例提供的区块链网络800的功能架构示意图,包括应用层1、共识层2、网络层3、数据层4和资源层5,下面分别进行说明。

资源层5封装了实现区块链网路800中的各个节点810的计算资源、存储资源和通信资源。

数据层4封装了实现账本的各种数据结构,包括以文件系统中的文件实现的区块链,键值型的状态数据库和存在性证明(例如区块中交易的哈希树)。

网络层3封装了点对点(p2p,pointtopoint)网络协议、数据传播机制和数据验证机制、接入认证机制和业务主体身份管理的功能。

其中,p2p网络协议实现区块链网络800中节点810之间的通信,数据传播机制保证了交易在区块链网络800中的传播,数据验证机制用于基于加密学方法(例如数字证书、数字签名、公/私钥对)实现节点810之间传输数据的可靠性;接入认证机制用于根据实际的业务场景对加入区块链网络800的业务主体的身份进行认证,并在认证通过时赋予业务主体接入区块链网络800的权限;业务主体身份管理用于存储允许接入区块链网络800的业务主体的身份、以及权限(例如能够发起的交易的类型)。

共识层2封装了区块链网络800中的节点810对区块达成一致性的机制(即共识机制)、交易管理和账本管理的功能。共识机制包括pos、pow和dpos等共识算法,支持共识算法的可插拔。

交易管理用于验证节点810接收的交易中携带的数字签名,验证业务主体的身份信息,并根据身份信息判断确认其是否具有权限进行交易(从业务主体身份管理读取相关信息);对于获得接入区块链网络800的授权的业务主体而言,均拥有认证中心颁发的数字证书,业务主体利用自己的数字证书中的私钥对提交的交易进行签名,从而声明自己的合法身份。

账本管理用于维护区块链和状态数据库。对于取得共识的区块,追加到区块链的尾部;执行取得共识的区块中的交易,当交易包括更新操作时更新状态数据库中的键值对,当交易包括查询操作时查询状态数据库中的键值对并向业务主体的客户端节点返回查询结果。支持对状态数据库的多种维度的查询操作,包括:根据区块序列号(例如交易的哈希值)查询区块;根据区块哈希值查询区块;根据交易序列号查询区块;根据交易序列号查询交易;根据业务主体的账号(序列号)查询业务主体的账号数据;根据通道名称查询通道中的区块链。

应用层1封装了区块链网络能够实现的各种业务,包括交易的溯源、存证和验证等。

应用本申请上述实施例,通过交互时间记录,记录与目标对象存在社交关系的社交对象执行针对媒体信息的交互行为时所对应的交互时间,进而在对目标对象进行基于社交关系的信息推荐时,基于时间交互记录确定在目标时间段内执行有针对媒体信息的交互行为的目标社交对象,从而在进行媒体信息推荐时,只需要获取目标社交对象的交互历史记录,从而根据目标社交对象的交互历史记录确定用于推荐的目标媒体信息。

相较于相关技术,本申请在存储时只需要存储社交对象执行针对媒体信息的交互行为时所对应的交互时间,从而降低了需要存储的数据量,节省了存储成本;且只需要读取目标时间段内的社交对象的交互历史记录即可确定用于推荐的媒体信息,从而提高了媒体信息的查询效率,保证了信息推荐的即时性。

接下来继续对本申请实施例提供的媒体信息的获取方法进行说明,本申请实施例提供的媒体信息的获取方法可以由终端及服务器协同实施。参见图11,图11为本申请实施例提供的媒体信息的获取方法的流程示意图,本申请实施例提供的媒体信息的获取方法包括:

步骤201:终端响应于目标对象触发的媒体信息获取指令,发送针对目标对象的媒体信息获取请求至服务器。

这里,终端设置有媒体信息推荐客户端,终端响应于用户触发的媒体信息获取指令(比如通过刷新页面等操作触发的),向服务器发送媒体信息获取请求。

步骤202:服务器响应于媒体信息获取请求,获取目标对象对应的媒体信息的交互时间记录。

服务器在进行媒体信息推荐时,首先获取目标对象对应的媒体信息的交互时间记录,从而基于交互时间记录确定出向目标对象进行推荐的媒体信息。这里,该交互时间记录,用于记录与目标对象存在社交关系的社交对象执行针对媒体信息的交互行为时,所对应的交互时间(具体可以是交互的时间点)。那么基于交互时间记录确定出向目标对象进行推荐的媒体信息,比如可以是确定交互时间记录中处于预设时间段内的交互行为对应的媒体信息为用于推荐的媒体信息。其中,社交关系可以是好友关系、关注关系等;媒体信息可以是视频、文章、音乐等,相应的交互行为可以是文章阅读行为、视频观看行为、音乐收听行为等。如此,则可以实现根据目标对象的社交关系进行媒体信息推荐的目的,给用户营造一种社交社区的氛围。

步骤203:基于交互时间记录,确定在目标时间段内执行有针对媒体信息的交互行为的目标社交对象。

这里,在实际应用中,可以预先设置目标时间段,比如距离当前日期的近期3天内。然后根据目标对象的交互时间记录,确定在目标时间段内执行过针对媒体信息的交互行为的目标社交对象,比如确定在近期3天内有过阅读文章行为的好友。

步骤204:获取目标社交对象的交互历史记录。

这里,该交互历史记录,用于记录相应目标社交对象执行过交互行为的目标媒体信息。

步骤205:基于交互历史记录,获取目标媒体信息。

步骤206:将目标媒体信息推荐至目标对象对应的终端。

这里,服务器还可以根据目标对象的画像信息等对目标媒体信息进行进一步地筛选,以提高信息推荐的精度。

步骤207:终端呈现推荐的目标媒体信息。

这里,在实际应用中,服务器在将目标媒体信息推荐至目标对象的终端时,还生成针对目标媒体信息的提示信息,该提示信息用于提示相应的目标社交对象针对目标媒体信息执行过交互行为。从而将携带提示信息的目标媒体信息推荐至目标对象对应的终端,以使得终端呈现目标媒体信息的同时呈现提示信息。从而为用户营造一种社区的氛围。

应用本申请上述实施例,通过交互时间记录,记录与目标对象存在社交关系的社交对象执行针对媒体信息的交互行为时所对应的交互时间,进而在对目标对象进行基于社交关系的信息推荐时,基于时间交互记录确定在目标时间段内执行有针对媒体信息的交互行为的目标社交对象,从而在进行媒体信息推荐时,只需要获取目标社交对象的交互历史记录,从而根据目标社交对象的交互历史记录确定用于推荐的目标媒体信息。

相较于相关技术,本申请在存储时只需要存储社交对象执行针对媒体信息的交互行为时所对应的交互时间,从而降低了需要存储的数据量,节省了存储成本;且只需要读取目标时间段内的社交对象的交互历史记录即可确定用于推荐的媒体信息,从而提高了媒体信息的查询效率,保证了信息推荐的即时性。

下面将说明本申请实施例在一个实际的应用场景中的示例性应用。

首先对本申请实施例涉及的名词和术语进行解释,包括:1)社交关系:是指2个或更多人类个体在网络上产生的任何关系,包括好友、关注等关系。

2)内容发布队列:可认为是一个发件箱,存储用户自己发布的所有内容。

3)内容接收队列:可以认为是一个收件箱,存储所有好友发布的内容。

4)更新时间接收队列:可以认为是一个收件箱,存储所有好友发布内容的最近更新时间。

5)读扩散:用户生成内容时将其存储到自己的内容发布队列,用户读取内容时要遍历自己每个好友的发内容布队列。

6)写扩散:用户生成内容时将其存储到自己好友的内容接收队列,用户读取内容时只需要读取自己的内容接收队列。

7)redis:是一个开源免费的高性能key-value数据库,同时还提供list,set,zset,hash等数据结构的存储。

8)发布内容:本方案主要用于给用户推荐其好友看过的内容,与传统的内容生产不太一样,这里定义用户阅读了一篇文章,就可视为发布了一篇新内容。

在信息流推荐场景中,基于社交关系的推荐由于其可解释性强,内容丰富多样的特点越来越受到重视。基于社交关系的内容推荐存储方案一般涉及到2个阶段:第一是用户内容的写入阶段,第二是好友内容的读取阶段。相关技术中主要包含如下2种技术方案:

(1)基于读扩散的好友内容存储方案,包括:在写入阶段,用户产生或发布内容时,将生成的内容写入到用户的内容发布队列;在读取阶段:用户先读取自己的好友列表,然后批量读取好友列表中所有好友的内容发布队列,拼接后产生推荐内容候选集。通俗的讲就是写一次,读多次。但是,该方案的瓶颈在于如果用户的好友量级很大,那么在批量读取好友的内容发布队列时会产生很大的读扩散效应,具体的,如果1个用户有300个好友,那么该用户在请求推荐系统时,需要查询300个好友的内容发布队列,这会对后端系统造成极大的压力。同时,其耗时和失败问题也会更显著。

(2)基于写扩散的好友内容存储方案,包括:在写入阶段,用户产生内容时,先读取自己的好友列表,然后将生成的内容写扩散到所有好友的内容接收队列中;在读取阶段:用户直接读取自己的内容接收队列。通俗的讲就是写多次,读一次。但是,该方案的瓶颈在于如果用户的好友很量级很大,在批量写入到好友的内容接收队列时,一份内容会存储n(n为好友数)份,此时会要求更大的存储能力,对存储成本造成很大的压力。

基于此,本申请实施例提供一种基于读写扩散结合的优化方案,以至少解决上述相关技术中存在的问题,接下来进行详细说明。该方案在用户产生内容时,不将具体内容写扩散到好友的内容接收队列,而是将产生内容的时间写扩散到好友的更新时间接收队列;在用户读取时,不直接请求所有好友的内容发布队列,而是先读取自己的更新时间接收队列,找到最近一段时间有内容的好友列表,最后再读取这批好友的内容发布队列。该方案具体由以下几部分构成:

第一,用户内容发布队列(即用户的交互历史记录)存储模块

通常用户交互的的媒体信息是实时写入的,但实际场景中对时效性的要求并不需要这么高。而要完全实现实时写入的要求,需要对后端存储的响应能力产生很大的挑战。用户的交互行为一般具有连续性,在短时间内可能会交互多条媒体信息,申请人统计了活跃用户交互行为的分布情况,如图12所示,图12是本申请实施例提供的目标对象在不同时间所交互的媒体信息的数量分布示意图,这里可以看到该用户的媒体信息的交互行为在交互时间21:36-23:31之间是比较集中的,如果此时仍直接将交互历史记录逐条上传至远程数据库,则容易导致写入冲突,出现写入失败等情况。因此申请人提出了聚合写交互历史记录的方案来降低写峰值,即先将一个时间段内的用户交互历史记录写入本地数据库,再将本地数据库中的一个时间段内的用户交互历史记录上传至远程数据库,从而使得远程数据库实现了每隔一段时间写一次的效果,降低用户内容发布队列的写入冲突,提高写入成功率。

如图5所示,包括:步骤501,在第一时间段内,终端检测到用户针对媒体信息执行交互行为时,上报单条交互历史记录(如阅读记录)至服务器;步骤502,服务器在本地数据库中存储单条交互历史记录(如阅读记录);步骤503,生成远程存储任务并确定各远程存储任务的优先级分数;步骤504,将各远程存储任务加入优先级调度队列,基于优先级调度策略,将第一时间段内的多条交互历史记录存储至远程数据库。

在实际实施时,将用户的内容发布队列(即交互历史记录)存储服务拆分成写聚合服务和写调度服务,通过本地redis通信。为避免用户请求落在不同机器上导致聚合效率受到影响的情况出现,采用有状态协议的方式尽可能保证同一个用户请求在同一机器上处理,即将一个时间段内用户的交互历史记录聚合存储于一台机器的本地数据库。

其中,写聚合服务即将用户在一个时间段内的阅读历史(即交互历史记录)临时写入本地数据库redis,同时生成针对该用户的远程存储任务,将该用户的远程存储任务放到优先调度队列中,从而根据该优先调度队列去执行该用户的远程存储任务,将本地存储的交互历史记录保存到远程数据库中。该优先调度队列使用redis的sortedset来实现,key为用户标识,score为优先级分数。由于想达到越早写入和写入越多的用户应该优先调度,故申请人设计了优先级分数的计算函数为score(user_id)=first_timestamp-10*n,其中,first_stamp为交互时间最早的目标媒体信息所对应的交互时间戳,n为第一时间段内的媒体信息的数量,score(user_id)为远程存储任务对应的优先级分数。在调度的时候,分数越低的优先级越高。此外还可以通过限制处理本地聚合写入的速度,减少对下游存储的压力。

第二,用户执行针对媒体信息交互行为的交互时间的写扩散服务

如图4所示,用户产生交互行为时,首先查询用户最近一次的写扩散时间,如果该写扩散时间大于预设的写扩散时间间隔阈值(一般设置成1天),则拉取用户的社交对象列表(如好友列表),由于每个用户均设置有其好友的更新时间接收队列(即交互时间记录),因此,此时则将产生内容的时间写入用户各好友的更新时间接收队列;如果小于则结束;该队列以redis的sortedset结构,其key为好友标识,score为交互时间。此时可通过更新用户所有好友的更新时间接收队列来实现交互时间的写扩散。这里,设置写扩散时间间隔阈值的目的是通过牺牲一定的时间精度,来降低写扩散的量级,实现粗粒度的写扩散时间更新,降低写扩散阅读时间的性能开销。同时通过写扩散用户生产内容更新时间,避免写扩散用户具体内容数据,降低写扩散的存储成本。

第三,获取社交对象的交互历史记录服务

如图6所示,用户请求媒体信息时,首先确定需要查询多长目标时间段的社交对象的交互行为,考虑到推荐内容的时效性,在实际应用中,可以将目标时间段设置为当前日期的近3天。然后找出在该目标时间段内有交互行为的所有目标社交对象,从而使用redis的zrangebyscore命令从远程数据库拉取各目标社交对象的交互历史记录列表,拉取成功后将交互历史记录列表涉及的媒体信息合并返回给用户,以实现基于社交关系的媒体信息的推荐。

在实际应用中,服务器在将媒体信息推荐至目标对象的终端时,还生成针对媒体信息的提示信息,该提示信息用于提示相应的目标社交对象(比如目标对象的好友)针对该媒体信息执行过交互行为(比如阅读过该媒体信息)。从而将携带提示信息的媒体信息推荐至目标对象对应的终端,以使得终端呈现目标媒体信息的同时呈现提示信息。作为示例,参见图7,图7是本申请实施例提供的媒体信息的呈现示意图。这里,将用户a看过的视频“3分钟看完,物理学中最诡异的量子纠缠现象,可能颠覆你的世界观”推荐至用户b,该用户b和用户a为好友关系,此时在用户b的终端的视图界面中,呈现该视频3分钟看完,物理学中最诡异的量子纠缠现象,可能颠覆你的世界观”,同时呈现“好友在看”的提示信息,以提示用户b其好友用户a看过该视频“3分钟看完,物理学中最诡异的量子纠缠现象,可能颠覆你的世界观”。从而为用户营造一种社区的氛围。

在实际应用中,上述社交关系也可不限于好友关系,也可应用于关注关系,即关注的账号发表文章后,粉丝也可收到推荐内容。好友的行为数据不限于看过的文章,也可应用于发布的微博,评论、点赞或转发的文章等内容。存储的介质也可不限于redis数据库,可以是其他的key-value的数据库。

应用本申请上述实施例,第一,相比传统的写用户阅读历史方案,本申请提出了一种先写本地redis,然后再通过优先级队列调度行为越早越多的用户来聚合写,极大的降低了对线上redis的写入峰值,提高了写入性能。

第二,相比传统的阅读历史写扩散方案,本申请提出了一种阅读时间写扩散的方案,由于阅读时间只需要4个字节就可以存储下来,相比原来几百条的阅读历史,可以极大的节约存储成本。同时根据实际场景需求,提出了间隔时间写扩散的方案,通过牺牲一定的时间精度,来降低写扩散的量级,达到不错的性价比。

第三,相比传统的读扩散方案,本申请提出了一种先确定有阅读历史的好友列表,再去读扩散好友的阅读历史列表的方案。由于在用户的所有好友中,只有一部分好友存在最近阅读历史,此时,可以避免读取很大一部分无阅读历史的好友,从而降低读扩散的倍数,减少后端存储的读压力。

下面继续说明本申请实施例提供的媒体信息的获取装置555,在一些实施例中,媒体信息的获取装置可采用软件模块的方式实现。参见图13,图13是本申请实施例提供的媒体信息的获取装置555的结构示意图,本申请实施例提供的媒体信息的获取装置555包括:

第一获取模块5551,用于获取目标对象对应的媒体信息的交互时间记录;

其中,所述交互时间记录,用于记录与所述目标对象存在社交关系的社交对象执行针对媒体信息的交互行为时,所对应的交互时间;

确定模块5552,用于基于所述交互时间记录,确定在目标时间段内执行有针对媒体信息的交互行为的目标社交对象;

第二获取模块5553,用于获取所述目标社交对象的交互历史记录,所述交互历史记录,用于记录相应目标社交对象执行过所述交互行为的目标媒体信息;

第三获取模块5554,用于基于所述交互历史记录,获取所述目标媒体信息,所述目标媒体信息,用于推荐至所述目标对象对应的终端。

在一些实施例中,所述第一获取模块5551,还用于当检测到与所述目标对象存在社交关系的第一社交对象执行针对第一媒体信息的交互行为时,获取所述交互时间记录中对应所述第一社交对象的交互时间,并

获取执行针对第一媒体信息的交互行为的时间与所述交互时间记录中对应所述第一社交对象的交互时间的时间间隔;

当所述时间间隔达到时间间隔阈值时,根据执行针对第一媒体信息的交互行为的时间,更新所述交互时间记录中对应所述第一社交对象的交互时间。

在一些实施例中,所述第一获取模块5551,还用于当检测到所述目标对象执行针对第二媒体信息的交互行为时,获取第二社交对象所对应的目标交互时间记录中对应所述目标对象的交互时间,其中,所述第二社交对象与所述目标对象存在社交关系;

获取执行针对第二媒体信息的交互行为的时间与所述目标交互时间记录中对应所述目标对象的交互时间的时间间隔;

当所述时间间隔达到时间间隔阈值时,根据执行针对第二媒体信息的交互行为的时间,更新所述目标交互时间记录中对应所述目标对象的交互时间。

在一些实施例中,所述装置还包括:

存储模块,用于存储第一时间段内所述社交对象的交互历史记录至本地数据库,并

生成对应所述社交对象的远程存储任务;

其中,所述远程存储任务,用于指示将所述本地数据库中存储的第一时间段内所述社交对象的交互历史记录存储于远程数据库中。

在一些实施例中,所述存储模块,还用于基于有状态协议,建立与所述社交对象对应的终端之间的通信连接;

通过所述通信连接,接收所述终端在所述第一时间段内发送的所述社交对象的交互历史记录;

将所述第一时间段内所述社交对象的交互历史记录存储至本地数据库。

在一些实施例中,所述社交对象的数量为至少两个,每个所述社交对象对应一个所述远程存储任务,所述存储模块,还用于确定各所述远程存储任务对应的优先级分数;

将所述远程存储任务按照所述优先级分数进行排序,得到远程存储任务序列;

基于所述远程存储任务序列,按照优先级由高到低的顺序依次执行所述远程存储任务。

在一些实施例中,所述存储模块,还用于根据各所述社交对象对应所述第一时间段内的交互历史记录,获取各所述远程存储任务对应第一时间段内的媒体信息的数量;

获取各所述社交对象的交互历史记录中,交互时间最早的目标媒体信息所对应的交互时间戳;

基于获取的所述交互时间戳以及所述媒体信息的数量,确定各所述远程存储任务对应的优先级分数。

在一些实施例中,所述第二获取模块5553,还用于发送对应目标社交对象的交互历史记录的获取请求至远程数据库;

当所述目标社交对象为至少两个时,接收到所述远程数据库返回的各所述目标社交对象的交互历史记录列表;

将各所述目标社交对象的交互历史记录列表进行合并,得到所述交互历史记录。

在一些实施例中,所述存储模块,还用于存储所述社交对象的交互历史记录至区块链网络;

相应地,所述获取所述目标社交对象的交互历史记录,包括:

生成并发送用于获取区块链网络中目标社交对象的交互历史记录的交易;

接收所述区块链网络基于所述交易返回的所述目标社交对象的交互历史记录。

在一些实施例中,所述装置还包括:

推荐模块,用于响应于针对所述目标对象的媒体信息获取请求,获取所述目标对象的画像信息;

当所述目标媒体信息为至少两个时,从所述至少两个目标媒体信息中,筛选得到与所述目标对象的画像信息相匹配的目标推荐媒体信息;

将所述目标推荐媒体信息推荐至所述目标对象对应的终端。

在一些实施例中,所述推荐模块,还用于响应于针对所述目标对象的媒体信息获取请求,当所述目标媒体信息为至少两个时,获取各所述目标媒体信息对应的交互时间;

从所述至少两个目标媒体信息中,选择交互时间处于第二时间段内的目标媒体信息作为目标推荐媒体信息;

将所述目标推荐媒体信息推荐至所述目标对象对应的终端。

在一些实施例中,所述推荐模块,还用于生成对应所述目标媒体信息的提示信息,所述提示信息,用于提示相应的目标社交对象针对所述目标媒体信息执行过所述交互行为;

将携带所述提示信息的所述目标媒体信息,推荐至所述目标对象对应的终端,以使所述终端呈现所述目标媒体信息的同时呈现所述提示信息。

应用本申请上述实施例,通过交互时间记录,记录与目标对象存在社交关系的社交对象执行针对媒体信息的交互行为时所对应的交互时间,进而在对目标对象进行基于社交关系的信息推荐时,基于时间交互记录确定在目标时间段内执行有针对媒体信息的交互行为的目标社交对象,从而在进行媒体信息推荐时,只需要获取目标社交对象的交互历史记录,从而根据目标社交对象的交互历史记录确定用于推荐的目标媒体信息。

相较于相关技术,本申请在存储时只需要存储社交对象执行针对媒体信息的交互行为时所对应的交互时间,从而降低了需要存储的数据量,节省了存储成本;且只需要读取目标时间段内的社交对象的交互历史记录即可确定用于推荐的媒体信息,从而提高了媒体信息的查询效率,保证了信息推荐的即时性。

本申请实施例还提供一种电子设备,所述电子设备包括:

存储器,用于存储可执行指令;

处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的媒体信息的获取方法。

本申请实施例还提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例提供的媒体信息的获取方法。

本申请实施例还提供一种计算机可读存储介质,存储有可执行指令,所述可执行指令被处理器执行时,实现本申请实施例提供的媒体信息的获取方法。

在一些实施例中,计算机可读存储介质可以是fram、rom、prom、eprom、eeprom、闪存、磁表面存储器、光盘、或cd-rom等存储器;也可以是包括上述存储器之一或任意组合的各种设备。

在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。

作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(html,hypertextmarkuplanguage)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。

作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。

以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。

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