专利名称:一种交互式网络电视iptv搜索缓存方法和系统的制作方法
技术领域:
本发明涉及通信系统中的IPTV搜索业务领域,特别涉及一种IPTV搜索缓存方法和系统。
背景技术:
随着IPTV系统中节目资源的不断丰富,用户在大量的节目中找到自己要观看的节目不是一件容易的事情,于是IPTV节目搜索系统应运而生,但是随着IPTV用户和节目的发展,在高并发访问情况下,传统的搜索引擎就不能支撑海量节目的高并发搜索,过长的搜索时间会超过用户的忍受度,降低用户的体验值。所以,目前如何解决在超大规模和高并发访问搜索系统的情况下,搜索系统性能严重下降的问题,成为目前亟待解决的技术问题
发明内容
·本发明提供一种IPTV搜索缓存方法和系统,用以解决现有技术中采用的搜索方式在超大规模或高并发访问下,搜索性能严重下降的问题。为了解决上述问题,本发明采用的技术方案如下一方面,本发明提供一种IPTV搜索缓存方法,包括搜索服务器根据接收的搜索条件,查询非关系型NoSql数据库中是否存储有所述搜索条件对应的结果集,若是,获取对应的结果集;若否,搜索第三方索引库,获取所述搜索条件对应的结果集,并构造包含有所述搜索条件和对应结果集的添加请求消息,发送至消息队列MQ服务器;所述MQ服务器将接收到的所述添加请求消息排队后发送至NoSql数据库,所述NoSql数据库基于所述添加请求消息,缓存所述搜索条件及其对应的结果集。进一步地,本发明所述方法中,所述NoSql数据库缓存对象包括缓存以搜索条件为索引的搜索结果集,以及单独缓存搜索条件的搜索条件集;所述搜索条件集为二级存储结构,一级结构保存各搜索条件的权限分组,二级结构保存各所述权限分组对应的搜索条件。进一步地,本发明所述方法中,还包括所述NoSql数据库在接收到所述添加请求消息时,提取其携带的搜索条件,判断所述搜索条件集中是否存在与该搜索条件对应的权限分组,若是,在所述二级结构中对应权限分组下添加所述搜索条件,并更新该搜索条件的访问次数;否则,在所述搜索条件集中创建新的权限分组,在所述二级结构中新增权限分组下添加所述搜索条件,并更新该搜索条件的访问次数。进一步地,本发明所述方法中,还包括所述搜索服务器在所述NoSql数据库中获取对应的结果集后,构造包含有所述搜索条件的访问请求消息,将其通过所述MQ服务器发送至NoSql数据库;所述NoSql数据库在接收到所述访问请求消息时,提取其携带的搜索条件,并对所述搜索条件集中所述搜索条件的访问次数进行更新。进一步地,本发明所述方法中,还包括所述NoSql数据库定时获取定时时间内各权限分组下搜索条件的访问次数,并基于该访问次数得到各权限分组的访问频度,根据所述访问频度计算各权限分组的权重。所述NoSql数据库缓存所述搜索条件及其对应的结果集时,进一步包括所述NoSql数据库判断当前缓存空间是否满足所述结果集的大小要求,若是,直接进行缓存;否则,根据最近最少使用LRU算法和最不常使用LFU算法,在权重最低的分组权限中获取最近最不常使用的搜索条件,将该搜索条件在所述搜集条件集中删除,以及将该搜索条件对应的结果集删除后,进行缓存。进一步地,本发明所述方法中,还包括 所述NoSql数据库定时遍历所述搜索条件集,发送各搜索条件到前置机,并获取前置机反馈的对应搜索条件的结果集,对自身存储的结果集进行更新。另一方面,本发明还提供一种IPTV搜索缓存系统,包括搜索服务器、MQ服务器和NoSql数据库;所述搜索服务器,包括第一搜索模块,用于接收搜索条件,并根据该搜索条件查询所述NoSql数据库中是否存储有所述搜索条件对应的结果集,若是,获取对应的结果集;否则,调用第二搜索模块;第二搜索模块,用于根据所述搜索条件,搜索第三方索引库,获取所述搜索条件对应的结果集,并调用第一信息构造模块;第一信息构造模块,用于构造包含有所述搜索条件和对应结果集的添加请求消息,发送至所述MQ服务器;所述MQ服务器,包括排队模块,用于接收所述搜索服务器发送的消息,并对各消息进行排队;消息转发模块,用于将排队的各消息逐一发送至所述NoSql数据库;所述NoSql数据库,包括数据更新模块,用于在接收到所述MQ服务器发送的添加请求消息时,缓存所述搜索条件及其对应的结果集。进一步地,本发明所述系统中,所述NoSql数据库缓存对象包括缓存以搜索条件为索引的搜索结果集,以及单独缓存搜索条件的搜索条件集;所述搜索条件集为二级存储结构,一级结构保存各搜索条件的权限分组,二级结构保存各所述权限分组对应的搜索条件。进一步地,本发明所述系统中,所述数据更新模块进一步包括第一信息提取子模块,用于在接收到所述添加请求消息时,提取其携带的搜索条件;添加子模块,用于判断所述搜索条件集中是否存在与所述搜索条件对应的权限分组,若是,在所述二级结构中对应权限分组下添加所述搜索条件,并更新该搜索条件的访问次数;否则,在所述搜索条件集中创建新的权限分组,在所述二级结构中新增权限分组下添加所述搜索条件,并更新该搜索条件的访问次数。
进一步地,本发明所述系统中所述搜索服务器,还包括第二信息构造模块,用于在所述NoSql数据库中获取对应的结果集后,构造包含有所述搜索条件的访问请求消息,将其通过所述MQ服务器发送至NoSql数据库;所述数据更新模块,进一步包括第二信息提取子模块,用于在接收到所述访问请求消息时,提取其携带的搜索条件,调用更新子模块;更新子模块,用于对所述搜索条件集中所述搜索条件的访问次数进行更新。进一步地,本发明所述系统中
所述NoSql数据库,还包括权重计算模块,用于定时获取定时时间内各权限分组下搜索条件的访问次数,并基于该访问次数得到各权限分组的访问频度,根据所述访问频度计算各权限分组的权重;所述数据更新模块,进一步包括检测子模块,用于在缓存所述搜索条件及其对应的结果集前,判断当前缓存空间是否满足所述结果集的大小要求,若是,对所述搜索条件及其对应的结果集直接进行缓存;否则,调用缓存删除子模块;缓存删除子模块,用于根据最近最少使用LRU算法和最不常使用LFU算法,在权重最低的分组权限中获取最近最不常使用的搜索条件,将该搜索条件在所述搜集条件集中删除,以及将该搜索条件对应的结果集删除后,对所述搜索条件及其对应的结果集进行缓存。进一步地,本发明所述系统中所述数据更新模块,还用于定时遍历所述搜索条件集,发送各搜索条件到前置机,并获取前置机反馈的对应搜索条件的结果集,对所述NoSql数据库存储的结果集进行更新。与现有技术相比,本发明有益效果如下本发明所述方法和系统,提供了基于NoSql数据库的IPTV搜索缓存的方法,很好的解决了在超大规模和高并发访问搜索系统的情况下,搜索系统性能严重下降的问题,提高了用户体验,在IPTV业务领域具有普遍的实际应用意义。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图I为本发明实施例提供的一种IPTV搜索缓存方法的流程图;图2为本发明实施例所述方法应用的系统架构图;图3为本发明实施例中搜索结果集的缓存示意图;图4为本发明实施例中搜索条件集的缓存示意图;图5为本发明实施例中搜索条件双向链表的示意图;图6为本发明实施例中缓存处理流程图7为本发明实施例中搜索结果集更新流程图;图8为本发明实施例中搜索条件更新流程图;图9为本发明实施例提供的一种IPTV搜索缓存系统的框图。
具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。为了解决现有技术中超大规模或高并发访问搜索场景下,搜索性能严重下降的问题,本发明实施例提供一种IPTV搜索缓存方法和系统。所述方法和系统利用NoSqK非关系 型)数据库作为缓存介质,以“Key-Value”的存储方式,实现了海量存储数据、数据共享、高并发访问、高可靠读取,很好的解决了超大规模和高并发访问搜索系统场景下的性能问题。方法实施例如图I所示,本发明实施例提供一种IPTV搜索缓存方法,该方法应用的系统架构图如图2所示,所述方法具体包括步骤S101,搜索服务器接收搜索条件;步骤S102,查询非关系型NoSql数据库中是否存储有所述搜索条件对应的结果集,若是,执行步骤S103 ;否则,执行步骤S104 ;步骤S103,在NoSql数据库中获取搜索条件对应的结果集;步骤S104,搜索第三方索引库,获取所述搜索条件对应的结果集,并构造包含有所述搜索条件和对应结果集的添加请求消息,发送至消息队列MQ服务器;步骤S105,MQ服务器对接收到的消息排队后发送至NoSql数据库;步骤S106,NoSql数据库基于所述添加请求消息,缓存所述搜索条件及其对应的结果集。本发明实施例所述方法弓丨入了 MQ服务器,该MQ服务器的弓I入避免了当多个搜索服务器并发向NoSql数据库发起访问请求,引起操作阻塞的问题。本发明实施例所述方法中,NoSql数据库缓存对象具体包括(I)以搜索条件为索引的搜索结果集;如图3所示,其中,key对应搜索条件,value对应结果集;(2)单独缓存搜索条件的搜索条件集;如图4所示,该搜索条件集采用二级存储结构,一级结构保存权限分组(即,对搜索条件进行分类),二级结构保存各权限分组对应的搜索条件。优选地,二级结构中保存的搜索条件以双向链表的方式保存。如图5所示,当采用双向链表方式时,双向链表中每个key对应一个搜索条件,value为前一个元素和后一个元素的key,链表头为teamCode,这样首位相连,组成一个链表环。基于上述NoSql数据库的缓存结构,下面分别从NoSql数据库缓存大小的确定、NoSql数据库缓存结果集的更新、NoSql数据库缓存搜索条件集的更新、以及缓存失效机制等几个方面,对本发明所述方法的实施细节进行进一步详细阐述,具体涉及如下内容一,缓存大小的确定
本发明实施例中,NoSql数据库缓存空间大小的确定,可以根据经验值确定,也可以根据IPTV机顶盒遥控器特征和用户输入习惯,在使用搜索时主要输入关键字对应数字或字母,根据关键字数量和权限分组数量推算出缓存的数据规模。二,缓存结果集的更新NoSql数据库作为缓存数据库,其应该保证缓存中的数据和搜索引擎中的数据一致,也就是说,NoSql数据库要能够及时而平缓地更新缓存中的脏数据(即与搜索引擎中不一致的数据)。对此,本实施例中采用如下实现方式NoSql数据库定时遍历搜索条件集中的各搜索条件,把各搜索条件发送到前置机,并获取前置机反馈的各搜索条件对应的结果集,对自身存储的结果集进行更新。其中,前置机在接收到搜索条件后,根据预先设定的选取策略,在集群式部署的搜索服务器中选择一搜索服务器,并将搜索条件发送至该搜索服务器,由该搜索服务器调用搜索引擎接口,向搜索索引库下载对应搜索条件匹配的结果集,并将该结果集反馈至前置·机,前置机获取到该结果集后,将其反馈至NoSql数据库。三,搜索条件集的更新本发明实施例所述方法为了实现对搜索条件集的更新,进行如下操作所述搜索服务器在NoSql数据库中获取对应的结果集后,构造包含有所述搜索条件的访问请求消息,将其通过MQ服务器排队后发送至NoSql数据库;NoSql数据库在接收到访问请求消息时,提取其携带的搜索条件,并对所述搜索条件集中所述搜索条件的访问次数进行更新;以及,NoSql数据库在接收到添加请求消息时,提取其携带的搜索条件,判断搜索条件集中是否存在与该搜索条件对应的权限分组,若是,在搜索条件集的二级结构中对应权限分组下添加所述搜索条件,并更新该搜索条件的访问次数;否则,在搜索条件集中创建新的权限分组,在二级结构中新增权限分组下添加所述搜索条件,并更新该搜索条件的访问次数。其中,更新搜索条件的访问次数可以采用记录次数的方式,也可以采用移动双向链表的方式,当采用移动双向链表时,具体实现方式如下当缓存中某个搜索条件被访问(即NoSql数据库接收到访问请求消息)时,操作链表就将该搜索条件Key移到teamCode元素后面;每增加一个搜索条件(即NoSql数据库在接收到添加请求消息),操作链表就将该搜索条件Key移到teamCode元素后面。这样,对于一些不常被访问的搜索条件就自动移动到了 teamCode元素的前面,为缓存移出提供了依据。四,缓存失效机制;缓存失效机制是指当缓存被占满后,新增对象如何替换老对象的策略和方法。实施该机制的主要作用是保证缓存大小不会超过最大限制,同时确保新数据能被有效的加入缓存区。对此,本发明实施例采用如下方法来确保新数据被有效的加入缓存区NoSql数据库定时获取定时时间内各权限分组下搜索条件的访问次数,并基于该访问次数得到各权限分组的访问频度,根据所述访问频度计算各权限分组的权重。优选地,NoSql数据库计算权限分组的定时时间优选与更新缓存结果集同时进行。当NoSql数据库判断当前缓存空间是否满足缓存新结果集的大小要求时,在权重最低的权限分组中,根据LRU (Least recently used,最近最少使用)算法和LFU (LeastFrequently Used,最不常用)算法,获取最近最不常使用的搜索条件,将该搜索条件在搜集条件集中删除,以及将该搜索条件对应的结果集删除,并在删除后,对新结果集进行缓存。进一步地,当采用移动双向链表的方式记录访问次数时,上述获取到获取最近最不常使用的搜索条件是指权重最低的权限分组中teamCode元素前的key。五,缓存命中率本发明实施例中,衡量缓存性能的一个最重要的指标就是缓存命中率,其计算方式如下缓存读取次数/(缓存读取次数+搜索引擎搜索次数),该值越高表明缓存的性能越好,相应的搜索服务器的性能应该越高。缓存具体实现时,会实现一段时间的缓存命中率统计功能,用于评测缓存性能以及业务变化对缓存性能的影响。 综上所述,为本发明实施例所述方法的具体实现方式,可以将其总结为如下三个处理流程I,缓存处理流程,如图6所示,具体包括步骤S601,接收用户请求的搜索条件;步骤S602,判断缓存功能是否开启,若未开启,执行步骤S603 ;否则,执行步骤604 ;步骤S603,调用普通搜索方法,搜索出结果集,返回结果集,转步骤S610 ;步骤S604,根据搜索条件查询NoSql数据库,并判断是否有对应的结果集,若有,执行步骤S605 ;否则,执行步骤S607 ;步骤S605,向MQ服务器发送访问异步消息;步骤S606,返回结果集,转步骤S610 ;步骤S607,调用普通搜索方法,搜索出结果集;步骤S608,向MQ服务器发送增加同步消息;步骤S609,在缓存中增加结果集,转步骤S606 ;步骤S610,结束。2,搜索结果集更新流程,如图7所示,具体包括步骤S701,NoSql数据库定时触发更新操作;步骤S702,遍历搜索条件集中的搜索条件链表;步骤S703,发送搜索条件给前置机;步骤S704,把返回结果集写入缓存,返回步骤S702,直到遍历完;步骤S705,根据权限分组访问频度计算权重;步骤S706,把权重分组的权重写入缓存;步骤S707,结束。3,搜索条件更新流程,如图8所示,具体包括步骤S801,NoSql数据库接收MQ服务器发送的消息;步骤S802,解析接收到的消息,判断是否为访问操作还是添加操作,若是访问操作,执行步骤S803 ;若为添加操作,执行步骤S804 ;
步骤S803,更新搜索条件集内对应搜索条件的访问次数,移动搜索条件链表,转步骤 S812 ;步骤S804,判断缓存是否超限,若是,执行步骤S805 ;否则,执行步骤S808 ;步骤S805,根据权重判断需要移除搜索条件的权限分组;步骤S806,在搜索条件链表中移除搜索条件;步骤S807 ;在缓存中移出结果集,转步骤S812 ;步骤S808,判断缓存中是否有对应权限分组,若否,执行步骤S809;否则,执行步骤 S810 ;
·
步骤S809,增加相应的权限分组;
·
步骤S810,在搜索条件链表中增加搜索条件;步骤S811,返回操作结果;步骤S812,结束。综上所述,本发明实施例所述方法提供了基于NoSql数据库的IPTV搜索缓存的方法,很好的解决了在超大规模和高并发访问搜索系统的情况下,搜索系统性能严重下降的问题,提高了用户体验,在IPTV业务领域具有普遍的实际应用意义。系统实施例如图9所示,本发明实施例提供一种IPTV搜索缓存系统,该系统具体包括搜索服务器910、MQ服务器920和NoSql数据库930,其中:搜索服务器910,包括第一搜索模块911,用于接收搜索条件,并根据该搜索条件查询所述NoSql数据库中是否存储有所述搜索条件对应的结果集,若是,获取对应的结果集;否则,调用第二搜索模块;第二搜索模块912,用于根据所述搜索条件,搜索第三方索引库,获取所述搜索条件对应的结果集,并调用第一信息构造模块;第一信息构造模块913,用于构造包含有所述搜索条件和对应结果集的添加请求消息,发送至所述MQ服务器;MQ服务器920,包括排队模块921,用于接收所述搜索服务器发送的消息,并对各消息进行排队;消息转发模块922,用于将排队的各消息逐一发送至所述NoSql数据库;NoSql 数据库 930,包括数据更新模块931,用于在接收到MQ服务器920发送的添加请求消息时,缓存所述搜索条件及其对应的结果集。基于上述的系统组成,下面对本发明实施例所述系统实现搜索缓存的过程进行进一步详细阐述,具体涉及如下内容本发明实施例中,NoSql数据库930缓存对象包括缓存以搜索条件为索引的搜索结果集,以及单独缓存搜索条件的搜索条件集;所述搜索条件集为二级存储结构,一级结构保存各搜索条件的权限分组,二级结构保存各所述权限分组对应的搜索条件。进一步地,本发明实施例所述系统还对搜索条件集进行更新,具体实现方式如下
搜索服务器910,还包括第二信息构造模块914,用于在NoSql数据库930中获取对应的结果集后,构造包含有所述搜索条件的访问请求消息,将其通过MQ服务器920发送至NoSql数据库930 ;数据更新模块931,还包括第一信息提取子模块9311,用于在接收到添加请求消息时,提取其携带的搜索条件;添加子模块9312,用于判断搜索条件集中是否存在与所述搜索条件对应的权限分组,若是,在所述二级结构中对应权限分组下添加所述搜索条件,并更新该搜索条件的访问次数;否则,在所述搜索条件集中创建新的权限分组,在所述二级结构中新增权限分组下添加所述搜索条件,并更新该搜索条件的访问次数。第二信息提取子模块9313,用于在接收到所述访问请求消息时,提取其携带的搜 索条件,调用更新子模块;更新子模块9314,用于对所述搜索条件集中所述搜索条件的访问次数进行更新。进一步地,本发明实施例所述系统基于上述的搜索条件更新机制,还可以进一步实现缓存失效机制,具体涉及如下内容NoSql数据库930,还包括权重计算模块932,用于定时获取定时时间内各权限分组下搜索条件的访问次数,并基于该访问次数得到各权限分组的访问频度,根据所述访问频度计算各权限分组的权重;数据更新模块931,进一步包括检测子模块9315,用于在缓存所述搜索条件及其对应的结果集前,判断当前缓存空间是否满足所述结果集的大小要求,若是,对所述搜索条件及其对应的结果集直接进行缓存;否则,调用缓存删除子模块;缓存删除子模块9316,用于根据最近最少使用LRU算法和最不常使用LFU算法,在权重最低的分组权限中获取最近最不常使用的搜索条件,将该搜索条件在所述搜集条件集中删除,以及将该搜索条件对应的结果集删除后,对所述搜索条件及其对应的结果集进行缓存。进一步地,本发明实施例所述系统还可以实现对缓存结果集的更新,具体实现方式为数据更新模块931,还用于定时遍历所述搜索条件集,发送各搜索条件到前置机,并获取前置机反馈的对应搜索条件的结果集,对所述NoSql数据库存储的结果集进行更新。综上所述,本发明实施例所述系统提供了基于NoSql数据库的IPTV搜索缓存的方法,很好的解决了在超大规模和高并发访问搜索系统的情况下,搜索系统性能严重下降的问题,提高了用户体验,在IPTV业务领域具有普遍的实际应用意义。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种交互式网络电视IPTV搜索缓存方法,其特征在于,包括 搜索服务器根据接收的搜索条件,查询非关系型NoSql数据库中是否存储有所述搜索条件对应的结果集,若是,获取对应的结果集;若否,搜索第三方索引库,获取所述搜索条件对应的结果集,并构造包含有所述搜索条件和对应结果集的添加请求消息,发送至消息队列MQ服务器; 所述MQ服务器将接收到的添加请求消息排队后发送至NoSql数据库,所述NoSql数据库基于所述添加请求消息,缓存所述搜索条件及其对应的结果集。
2.如权利要求I所述的方法,其特征在于,所述NoSql数据库缓存对象包括缓存以搜索条件为索引的搜索结果集,以及单独缓存搜索条件的搜索条件集;所述搜索条件集为二级存储结构,一级结构保存各搜索条件的权限分组,二级结构保存各所述权限分组对应的搜索条件。
3.如权利要求2所述的方法,其特征在于,所述方法还包括 所述NoSql数据库在接收到所述添加请求消息时,提取其携带的搜索条件,判断所述搜索条件集中是否存在与该搜索条件对应的权限分组,若是,在所述二级结构中对应权限分组下添加所述搜索条件,并更新该搜索条件的访问次数;否则,在所述搜索条件集中创建新的权限分组,在所述二级结构中新增权限分组下添加所述搜索条件,并更新该搜索条件的访问次数。
4.如权利要求2或3所述的方法,其特征在于,所述方法还包括 所述搜索服务器在所述NoSql数据库中获取对应的结果集后,构造包含有所述搜索条件的访问请求消息,将其通过所述MQ服务器发送至NoSql数据库; 所述NoSql数据库在接收到所述访问请求消息时,提取其携带的搜索条件,并对所述搜索条件集中所述搜索条件的访问次数进行更新。
5.如权利要求4所述的方法,其特征在于, 所述方法还包括所述NoSql数据库定时获取定时时间内各权限分组下搜索条件的访问次数,并基于该访问次数得到各权限分组的访问频度,根据所述访问频度计算各权限分组的权重。
所述NoSql数据库缓存所述搜索条件及其对应的结果集时,进一步包括 所述NoSql数据库判断当前缓存空间是否满足所述结果集的大小要求,若是,直接进行缓存;否则,根据最近最少使用LRU算法和最不常使用LFU算法,在权重最低的分组权限中获取最近最不常使用的搜索条件,将该搜索条件在所述搜集条件集中删除,以及将该搜索条件对应的结果集删除后,进行缓存。
6.如权利要求2或5所述的方法,其特征在于,所述方法还包括 所述NoSql数据库定时遍历所述搜索条件集,发送各搜索条件到前置机,并获取前置机反馈的对应搜索条件的结果集,对自身存储的结果集进行更新。
7.一种交互式网络电视IPTV搜索缓存系统,其特征在于,包括搜索服务器、MQ服务器和NoSql数据库; 所述搜索服务器,包括 第一搜索模块,用于接收搜索条件,并根据该搜索条件查询所述NoSql数据库中是否存储有所述搜索条件对应的结果集,若是,获取对应的结果集;否则,调用第二搜索模块;第二搜索模块,用于根据所述搜索条件,搜索第三方索引库,获取所述搜索条件对应的结果集,并调用第一信息构造模块; 第一信息构造模块,用于构造包含有所述搜索条件和对应结果集的添加请求消息,发送至所述MQ服务器; 所述MQ服务器,包括 排队模块,用于接收所述搜索服务器发送的消息,并对各消息进行排队; 消息转发模块,用于将排队的各消息逐一发送至所述NoSql数据库; 所述NoSql数据库,包括 数据更新模块,用于在接收到所述MQ服务器发送的添加请求消息时,缓存所述搜索条件及其对应的结果集。
8.如权利要求7所述的系统,其特征在于,所述NoSql数据库缓存对象包括缓存以搜索条件为索引的搜索结果集,以及单独缓存搜索条件的搜索条件集;所述搜索条件集为二级存储结构,一级结构保存各搜索条件的权限分组,二级结构保存各所述权限分组对应的搜索条件。
9.如权利要求8所述的系统,其特征在于,所述数据更新模块进一步包括 第一信息提取子模块,用于在接收到所述添加请求消息时,提取其携带的搜索条件; 添加子模块,用于判断所述搜索条件集中是否存在与所述搜索条件对应的权限分组,若是,在所述二级结构中对应权限分组下添加所述搜索条件,并更新该搜索条件的访问次数;否则,在所述搜索条件集中创建新的权限分组,在所述二级结构中新增权限分组下添加所述搜索条件,并更新该搜索条件的访问次数。
10.如权利要求8或9所述的系统,其特征在于, 所述搜索服务器,还包括第二信息构造模块,用于在所述NoSql数据库中获取对应的结果集后,构造包含有所述搜索条件的访问请求消息,将其通过所述MQ服务器发送至NoSql数据库; 所述数据更新模块,进一步包括 第二信息提取子模块,用于在接收到所述访问请求消息时,提取其携带的搜索条件,调用更新子模块; 更新子模块,用于对所述搜索条件集中所述搜索条件的访问次数进行更新。
11.如权利要求10所述的系统,其特征在于, 所述NoSql数据库,还包括权重计算模块,用于定时获取定时时间内各权限分组下搜索条件的访问次数,并基于该访问次数得到各权限分组的访问频度,根据所述访问频度计算各权限分组的权重; 所述数据更新模块,进一步包括 检测子模块,用于在缓存所述搜索条件及其对应的结果集前,判断当前缓存空间是否满足所述结果集的大小要求,若是,对所述搜索条件及其对应的结果集直接进行缓存;否贝U,调用缓存删除子模块; 缓存删除子模块,用于根据最近最少使用LRU算法和最不常使用LFU算法,在权重最低的分组权限中获取最近最不常使用的搜索条件,将该搜索条件在所述搜集条件集中删除,以及将该搜索条件对应的结果集删除后,对所述搜索条件及其对应的结果集进行缓存。
12.如权利要求8或11所述的系统,其特征在于,所述数据更新模块,还用于定时遍历所述搜索条件集,发送各搜索条件到前置机,并获取前置机反馈的对应搜索条件的结果集,对所述NoSql数据库存储的结果集进行更新。
全文摘要
本发明公开了一种IPTV搜索缓存方法和系统,所述方法包括搜索服务器根据接收的搜索条件,查询非关系型NoSql数据库中是否存储有所述搜索条件对应的结果集,若是,获取对应的结果集;若否,搜索第三方索引库,获取所述搜索条件对应的结果集,并构造包含有所述搜索条件和对应结果集的添加请求消息,发送至消息队列MQ服务器;所述MQ服务器对接收到的消息排队后发送至NoSql数据库,所述NoSql数据库基于所述添加请求消息,缓存所述搜索条件及其对应的结果集。本发明所述方法解决了在超大规模和高并发访问搜索系统的情况下,搜索系统性能严重下降的问题,提高了用户体验。
文档编号H04N21/231GK102902735SQ20121033551
公开日2013年1月30日 申请日期2012年9月12日 优先权日2012年9月12日
发明者张涛 申请人:中兴通讯股份有限公司