一种搜索引擎空间占用统计方法及系统的制作方法

文档序号:6522562阅读:234来源:国知局
一种搜索引擎空间占用统计方法及系统的制作方法
【专利摘要】本发明公开了一种搜索引擎空间占用统计方法,该方法包括:预先为每一用户保存对应的用户容量占用列表,所述用户容量占用列表包括用户信息及对应的容量配额信息;其中,容量配额信息包括该用户允许使用容量和已占用容量;接收用户的索引创建请求,所述索引创建请求包含用户信息和需要创建索引的内容;根据所述用户信息查找到对应的用户容量占用列表;对该次需要创建索引的内容进行分析统计,获取该次需要创建索引的内容的存储空间占用量;根据该次需要创建索引的内容的存储空间占用量对所述已占用容量进行累加,更新该用户的已占用容量。本发明还公开了一种搜索引擎空间占用统计系统。采用本发明能够分用户进行相应的容量管理。
【专利说明】一种搜索引擎空间占用统计方法及系统
【技术领域】
[0001]本发明涉及搜索引擎【技术领域】,特别涉及一种搜索引擎空间占用统计方法及系统。
【背景技术】
[0002]在互联网飞速发展的今天,用户对以搜索引擎技术为基础的各种服务已经有了强烈的需求。例如日志服务,例如云搜索等服务。例如,用户可以把自己写的文章,或者某些程序产生的日志流和数据流发送到搜索引擎建索引,然后可以通过文章或日志里面的词汇进行搜索查询。这些服务都是搭建在云端或者某个大集群上,然后开放给个人用户,某些公司或者社会团体。根据用户分级的不同,用户享受的各种资源也不同,例如其中最重要的资源便是容量资源。要进行存储容量分级限容,必须要统计某个用户已经在搜索引擎中建的索引内容的大小。但是,问题是,在以Iucene为基础的搜索引擎中,所有用户的数据都是按照搜索引擎的存储算法,汇总存储在.tis,.tii等文件中,即所有用户的数据都是按照一定的算法打散后存储在各个文件中,没有办法直接获取某个用户已经占用了多大的存储容量,所以也没有办法按照容量来进行资源限制。

【发明内容】

[0003]本发明的目的在于提供一种搜索引擎空间占用统计方法和系统,能够分用户进行
相应的容量管理。
[0004]为实现上述发明目的,本发明提供了一种搜索引擎空间占用统计方法,该方法包括:
[0005]预先为每一用户保存对应的用户容量占用列表,所述用户容量占用列表包括用户信息及对应的容量配额信息;其中,容量配额信息包括该用户允许使用容量和已占用容量;
[0006]接收用户的索引创建请求,所述索引创建请求包含用户信息和需要创建索引的内容;
[0007]根据所述用户信息查找到对应的用户容量占用列表;
[0008]对该次需要创建索引的内容进行分析统计,获取该次需要创建索引的内容的存储空间占用量;
[0009]根据该次需要创建索引的内容的存储空间占用量对所述已占用容量进行累加,更新该用户的已占用容量。
[0010]为实现上述发明目的,本发明还提供了一种搜索引擎空间占用统计系统,包括:
[0011]数据库模块,用于预先为每一用户保存对应的用户容量占用列表,所述用户容量占用列表包括用户信息及对应的容量配额信息;其中,容量配额信息包括该用户允许使用容量和已占用容量;
[0012]代理模块,用于接收用户的索引创建请求,所述索引创建请求包含用户信息和需要创建索引的内容;
[0013]根据所述用户信息查找到对应的用户容量占用列表;
[0014]对该次需要创建索引的内容进行分析统计,获取该次需要创建索引的内容的存储空间占用量;
[0015]根据该次需要创建索引的内容的存储空间占用量对所述已占用容量进行累加,更新该用户的已占用容量。
[0016]综上所述,本发明实施例在外部用户需要往搜索引擎模块创建一条索引的时候,将该次需要创建索引的数据内容先发往代理模块,在代理模块里统计该次需要创建索引的数据内容占用的内存大小,并进行流量累加等其他处理工作,更新数据库模块中的用户容量占用列表,然后再把该次需要创建索引的数据内容发往搜索引擎模块建索引。不再像现有技术那样,直接把该次需要创建索引的数据内容发往搜索引擎模块建索引。通过本发明的方案,为作为互联网服务对外提供服务的搜索引擎提供了一种容量占用量统计的可能,对每一条需要创建索引的数据流的流量进行了统计,针对性的分用户进行相应的容量管理,能够准确且方便地获取某个用户已使用的存储容量来进行限容,从而对非法无节制发创建索引的数据流的恶意用户进行了限制。
【专利附图】

【附图说明】
[0017]图1为本发明实施例搜索引擎空间占用统计方法的流程示意图。
[0018]图2为本发明具体实施例中应用于上述方法的搜索引擎空间占用统计系统的结构示意图。
【具体实施方式】
[0019]为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
[0020]本发明的核心思想是:对用户每次需要创建索引的数据内容占用的内存大小进行统计,针对性的分用户进行相应的容量管理,能够准确且方便地获取某个用户已使用的存储容量来进行限容,从而对非法无节制发创建索引的数据流的恶意用户进行了限制。
[0021]本发明实施例提供了一种搜索引擎空间占用统计方法,其流程示意图如图1所示,该方法包括:
[0022]步骤11、预先为每一用户保存对应的用户容量占用列表,所述用户容量占用列表包括用户信息及对应的容量配额信息;其中,容量配额信息包括该用户允许使用容量和已占用容量;
[0023]步骤12、接收用户的索引创建请求,所述索引创建请求包含用户信息和需要创建索引的内容;
[0024]步骤13、根据所述用户信息查找到对应的用户容量占用列表;
[0025]该步骤用于进行信息检索,从而进行用户合法性验证,只有查找到对应的用户容量占用列表,才能进行后续的统计步骤。
[0026]步骤14、对该次需要创建索引的内容进行分析统计,获取该次需要创建索引的内容的存储空间占用量;[0027]具体地,针对不同的生产环境,有精确统计和模糊统计两种做法:
[0028]其中,精确统计方法适用于索引创建倾情压力较小的生产场景:对该次需要创建索引的内容进行精确统计,获取中文字符和英文字符的数量,按照中文字符和英文字符各自对应的字节长度进行转换累加,得到该次需要创建索引的内容的存储空间占用量。例如,索引创建请求中携带的需要创建索引的内容为“2013/06/11 13:12:11 user张三login”,这是某些程序产生的日志流的其中一个日志条目,按照英文占一个字节,中文占两个字节,空格也占一个字节,累加该日志条目得到该次需要创建索引的内容的存储空间占用量为35个字节。
[0029]模糊统计方法适用于云日志这种高并发创建索引,性能压力很大的场景。在性能压力很大的情况下,并不太适合逐个字符去分析需要创建索引的文本内容。因此,对该次需要创建索弓I的内容进行模糊统计,预先设定该次需要创建索弓丨的内容的中英文权重,根据所述中英文权重,获取中英文字节长度和,得到该次需要创建索引的内容的存储空间占用量。例如,用户a需要模糊统计,一般情况下,a的中文权重是30%,那么,用户a的数据流内容,可以按照30%的中文和70%的英文进行统计,得到该次请求需要创建索引的数据流的存储空间占用量。其中,中英文权重可以根据具体应用和实际情况实时进行动态调整。
[0030]还有一种情况,有些日志的内容,一般都是以英文为主,所以可以直接获取需要创建索引的文本内容的字符串长度,按照英文算出存储占用量即可。
[0031]步骤15、根据该次需要创建索引的内容的存储空间占用量对所述已占用容量进行累加,更新该用户的已占用容量。
[0032]其中,更新该用户的已占用容量可以分为实时更新和定时更新两种。
[0033]更新之后的用户已占用容量就会存入数据库模块,即数据持久化。但是一般作为一个对外提供服务的互联网应用,接入的用户和应用数量巨大,实时持久化会容易会导致数据库瓶颈。所以,需要在搜索引擎空间占用统计系统的数据库模块中维护一个用户容量占用列表,预先为用户容量占用列表设置累加阀值和时间阀值,当需要创建索引的内容的存储空间占用量达到累加阀值或者时间阀值,则更新所述用户容量占用列表的已占用容量。举例来说,把某个用户单次过来的请求量,累加维护到这个用户容量占用列表里面,当达到系统设置的累加阀值5兆,就开始持久化。例如第一次请求量为I兆,第二次请求量为2兆,第三次请求量为3兆,每次请求量先暂存在代理模块的内存中,当累加的值为6兆,已经超过了累加阀值5兆,就开始持久化。而且,还应该设置一个时间阀值,例如每隔半小时去把用户容量占用列表里面的数据全部持久化。通过对累加阀值和时间阀值的合理设置,就能做到相对准确且准实时的数据持久化,就算代理模块出现错误当机了,损失的数据也所占的比例也极小。上述所提及的数据库模块、代理模块等会在后续的系统中详细介绍。
[0034]优选地,接收到用户的索引创建请求之后,该方法进一步包括:根据所述索引创建请求创建索引;所述创建索引的方法包括分词,然后保存需要创建索引的内容。其中,根据索引创建请求创建索引的过程仍然保留现有技术,在此不再赘述。
[0035]优选地,在步骤11中,为每一用户保存对应的用户容量占用列表,其中,用户容量占用列表是根据用户的注册,为用户配置而成的。
[0036]基于同样的发明构思,本发明还提出一种搜索引擎空间占用统计系统,参见图2,图2为本发明具体实施例中应用于上述方法的搜索引擎空间占用统计系统的结构示意图。图中每一个模块都是由多个服务器组成,即每一个模块都是一个服务器集群。该搜索引擎空间占用统计系统包括:
[0037]数据库模块201,用于预先为每一用户保存对应的用户容量占用列表,所述用户容量占用列表包括用户信息及对应的容量配额信息;其中,容量配额信息包括该用户允许使用容量和已占用容量;
[0038]代理模块202,用于接收用户的索引创建请求,所述索引创建请求包含用户信息和需要创建索引的内容;
[0039]根据所述用户信息查找到对应的用户容量占用列表;
[0040]对该次需要创建索引的内容进行分析统计,获取该次需要创建索引的内容的存储空间占用量;
[0041]根据该次需要创建索引的内容的存储空间占用量对所述已占用容量进行累加,更新该用户的已占用容量。
[0042]优选地,该系统进一步包括:
[0043]搜索引擎模块203,用于根据所述索引创建请求创建索引;所述创建索引的方法包括分词,然后保存需要创建索引的内容。
[0044]优选地,该系统进一步包括:
[0045]管理模块204,用于根据用户的注册,为用户配置相应的用户容量占用列表,并保存所述用户容量占用列表至数据库模块201。
[0046]进一步地,所述代理模块202进一步包括:
[0047]接收子模块2201,用于接收用户的索引创建请求,所述索引创建请求包含用户信息和需要创建索引的内容;
[0048]具体地,该接收子模块设有服务接口,例如HTTP接口,从服务接口可以接收到用户的索引创建请求。
[0049]查找子模块2202,用于根据所述用户信息查找到对应的用户容量占用列表;
[0050]统计子模块2203,用于对该次需要创建索引的内容进行分析统计,获取该次需要创建索引的内容的存储空间占用量;
[0051]更新存储子模块2204,用于根据该次需要创建索引的内容的存储空间占用量对所述已占用容量进行累加,更新该用户的已占用容量。
[0052]为清楚说明本发明,下面列举具体场景对本发明的方法及系统进行详细说明,整个数据流程和业务流程如下:
[0053]I)首先,用户接入:
[0054]搜索作为一个开放的服务,但是肯定不是谁都能随便使用。用户A通过管理模块注册,成为合法的用户。在注册的同时,管理模块会按照运营规则,为用户A分配一个允许使用容量,例如200MB,并把用户信息以及允许使用容量信息初始化到数据库模块保存。这里,数据库模块中保存的是用户容量占用列表,用户容量占用列表中包括用户A信息及对应的容量配额信息,其中,容量配额信息包括该用户允许使用容量和已占用容量。本实施例中用户A允许使用容量为200MB,由于初始状态用户注册之后还没有发送索引创建请求,所以已占用容量为O。
[0055]2)用户发送索引创建请求到代理模块:[0056]成为合法用户之后,即可使用搜索引擎的服务。例如用户A,现在有一个在运行的程序,需要输出日志。由于搜索引擎能够提供若干便捷强大的功能,例如按照关键字快速定位到某一行日志、对日志内容提供分析等功能,用户A调用代理模块提供的接口,在一条日志条目携带在索引创建请求中被输出的时候,就把该条日志条目的数据流发送到代理模块。例如该条条目的内容为:“2013/06/11 13:12:11 user张三login”。
[0057]代理模块接收到该条日志条目的数据流后,从请求信息里面获取出该条数据流是来自于用户A,然后从对应的用户容量占用列表里的用户信息以及容量配额信息里面匹配出用户A的限额以及已使用量。同时,针对生产环境,采用相应的统计方法,分析统计该条日志条目的数据流的字符串长度。
[0058]如I)所说,用户在注册的时候,已经被分配了配额,代理模块在启动时,会从数据库模块里加载(读取)用户信息以及对应的容量配额信息(允许使用容量和已占用容量)到内存,形成一个键值对的数据结构。启动后,每隔一段时间,会重新加载一次,载入新增的信息。而且,代理模块在统计出该条日志条目的数据流的字符串长度,得到此次需要创建索引的内容的存储空间占用量后,会对数据库模块中的已占用容量进行累加更新。由此可以看出,代理模块与数据库模块之间是双向交互。
[0059]3)索引创建请求经过代理模块到达搜索引擎模块,搜索引擎模块根据所述索引创建请求创建索引。
[0060]需要说明的是,本发明实施例中用户的索引创建请求只需要发送一次,经过代理模块,到达搜索引擎模块,这样,用户要进入搜索引擎模块建索引,必须经过代理模块对每一条需要创建索引的数据流的流量进行统计,不会发生遗漏统计的现象。
[0061]本发明搜索引擎空间占用统计方法及系统,会带来如下好处:
[0062]一、在搜索引擎模块前端增加代理模块,在这个代理模块对用户单次索引创建请求中的文本内容所占存储空间进行统计和累加,实现了分用户容量管理,可以根据不同用户进行相应资源限制。
[0063]二、针对不同的生产场景,提供了精确统计和模糊统计两种统计方案,进一步节省了统计资源。
[0064]三、统计结果持久化时,折中了性能需求和实时性需求,用累加阀值和时间阀值作为持久化触发点,从而避免了实时持久化导致的数据库瓶颈的出现。
[0065]以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种搜索引擎空间占用统计方法,其特征在于,该方法包括: 预先为每一用户保存对应的用户容量占用列表,所述用户容量占用列表包括用户信息及对应的容量配额信息;其中,容量配额信息包括该用户允许使用容量和已占用容量; 接收用户的索引创建请求,所述索引创建请求包含用户信息和需要创建索引的内容; 根据所述用户信息查找到对应的用户容量占用列表; 对该次需要创建索引的内容进行分析统计,获取该次需要创建索引的内容的存储空间占用星; 根据该次需要创建索引的内容的存储空间占用量对所述已占用容量进行累加,更新该用户的已占用容量。
2.如权利要求1所述的方法,其特征在于,接收到用户的索引创建请求之后,该方法进一步包括:根据所述索引创建请求创建索引;所述创建索引的方法包括分词,然后保存需要创建索引的内容。
3.如权利要求1所述的方法,其特征在于,该方法进一步包括:根据用户的注册,为用户配置相应的用户容量占用列表,并保存所述用户容量占用列表。
4.如权利要求1所述的方法,其特征在于,根据该次需要创建索引的内容的存储空间占用量对所述已占用容量进行累加,实时更新该用户的已占用容量。
5.如权利要求1所述的方法,其特征在于,根据该次需要创建索引的内容的存储空间占用量对所述已占用容量进行累加,定期更新该用户的已占用容量。
6.如权利要求5所述的方法,其特征在于,预先为用户容量占用列表设置累加阀值和时间阀值,当需要创建索引的内容的存储空间占用量达到累加阀值或者时间阀值,则更新所述用户容量占用列表的已占用容量。
7.如权利要求1所述的方法,其特征在于,对该次需要创建索引的内容进行精确统计,获取中文字符和英文字符的数量,按照中文字符和英文字符各自对应的字节长度进行转换累加,得到该次需要创建索引的内容的存储空间占用量。
8.如权利要求1所述的方法,其特征在于,对该次需要创建索引的内容进行模糊统计,预先设定该次需要创建索引的内容的中英文权重,根据所述中英文权重,获取中英文字节长度和,得到该次需要创建索引的内容的存储空间占用量。
9.一种搜索引擎空间占用统计系统,包括: 数据库模块,用于预先为每一用户保存对应的用户容量占用列表,所述用户容量占用列表包括用户信息及对应的容量配额信息;其中,容量配额信息包括该用户允许使用容量和已占用容量; 代理模块,用于接收用户的索引创建请求,所述索引创建请求包含用户信息和需要创建索引的内容; 根据所述用户信息查找到对应的用户容量占用列表; 对该次需要创建索引的内容进行分析统计,获取该次需要创建索引的内容的存储空间占用星; 根据该次需要创建索引的内容的存储空间占用量对所述已占用容量进行累加,更新该用户的已占用容量。
10.如权利要求9所述的系统,其特征在于,该系统进一步包括:搜索引擎模块,用于根据所述索引创建请求创建索引;所述创建索引的方法包括分词,然后保存需要创建索引的内容。
11.如权利要求9所述的系统,其特征在于,该系统进一步包括: 管理模块,用于根据用户的注册,为用户配置相应的用户容量占用列表,并保存所述用户容量占用列表至数据库模块。
12.如权利要求9所述的系统,其特征在于,所述代理模块进一步包括: 接收子模块,用于接收用户的索引创建请求,所述索引创建请求包含用户信息和需要创建索引的内容; 查找子模块,用于根据所述用户信息查找到对应的用户容量占用列表; 统计子模块,用于对该次需要创建索引的内容进行分析统计,获取该次需要创建索引的内容的存储空间占用量; 更新存储子模块,用于根据该次需要创建索引的内容的存储空间占用量对所述已占用容量进行累加,更新该用户的已`占用容量。
【文档编号】G06F17/30GK103631930SQ201310655028
【公开日】2014年3月12日 申请日期:2013年12月6日 优先权日:2013年12月6日
【发明者】宋恒 申请人:北京京东尚科信息技术有限公司, 北京京东世纪贸易有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1