一種搜索引擎空間占用統計方法及系統的制作方法
【專利摘要】本發明公開了一種搜索引擎空間占用統計方法,該方法包括:預先為每一用戶保存對應的用戶容量占用列表,所述用戶容量占用列表包括用戶信息及對應的容量配額信息;其中,容量配額信息包括該用戶允許使用容量和已占用容量;接收用戶的索引創建請求,所述索引創建請求包含用戶信息和需要創建索引的內容;根據所述用戶信息查找到對應的用戶容量占用列表;對該次需要創建索引的內容進行分析統計,獲取該次需要創建索引的內容的存儲空間占用量;根據該次需要創建索引的內容的存儲空間占用量對所述已占用容量進行累加,更新該用戶的已占用容量。本發明還公開了一種搜索引擎空間占用統計系統。采用本發明能夠分用戶進行相應的容量管理。
【專利說明】一種搜索引擎空間占用統計方法及系統
【技術領域】
[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日
【發明者】宋恒 申請人:北京京東尚科信息技術有限公司, 北京京東世紀貿易有限公司