專利名稱:一種話單剔重方法和裝置的制作方法
技術領域:
本發(fā)明涉及通信計費領域,特別涉及一種廣泛應用于通信領域中計 費、結算系統(tǒng)的話單剔重方法和裝置。
背景技術:
計費系統(tǒng)在對話單進行批價前,必須先對從各網元或業(yè)務平臺采集 到的每條話單進行剔重處理,因此對于每天需要處理海量話單的計費系 統(tǒng)來說,剔重系統(tǒng)的性能將直接影響到話單處理的及時性。
一般話單剔重過程均是在內存中進行的,基本原理如下首先從話 單中提取相應的關鍵域信息組合(例如手機號碼、通話時間、對方號碼、
SP代碼等,不同類的話單關鍵域組合不同),再到內存中查找是否已存 在該組合字段的信息,如果已有該話單關鍵域信息組合,則判斷為重單, 否則將該話單關鍵域信息保存在內存中。而內存中只能保存一定量的關 鍵域信息,對于過期的數據,將輸出到磁盤,以文件形式存放。當處理 延遲話單時,必須先將其重新加載到內存中。因此,如何管理、存放這 些話單關鍵域信息,直接關系到系統(tǒng)需要的存儲大小以及剔重的效率。
現有的查重技術一般都是提取話單中的關鍵域信息組合,直接存放 到內存的頁面中,并使用哈希鏈表或者平衡二叉樹方法檢索話單關鍵域 組合信息存放頁面,判斷是否為重復信息。
在一篇申請?zhí)枮?3145603.0的中國專利文件中^Hf 了一種基于內 存方式的話單剔重方法,包括提取話單中的關鍵域信息,簡單組合之后存放到內存的頁面中,使用HASH鏈表方法或者平衡二叉樹方法檢索話 單關鍵域組合信息存放頁面,并進行判斷是否為重復信息。
在一篇申請?zhí)枮?00610036536.4的中國專利文件中^^開了 一種消 除文件存儲系統(tǒng)中冗余文件的系統(tǒng)及方法,該消除文件存儲系統(tǒng)中冗余 文件的方法包括通過掃描存儲服務器模塊獲取文件的相關信息,包括 文件的大小、文件引用lt以及文件的ID,并計算文件內容的MD5值,并 將文件的MD5值進行哈希運算后,通過內存哈希映射表找到相應的哈希 表。如果該文件引用數超過閾值,則根據文件的MD5值以及文件的大小 通過哈希表找出存儲系統(tǒng)中冗余文件并進行刪除。
現有的剔重技術存在的缺點可以概括為以下兩點
1、 各類話單的關鍵域信息不一樣,字段長度及相應的組合之后的長 度均不一樣,不易管理,可擴展性差,且一般關鍵域信息組合字段都比 較長,占用存儲大,同時也會在一定程序上影響剔重比較的效率。
2、 簡單的哈希鏈表或者平衡二叉樹方法在處理海量數據(每天超過 億次話單,峰值每小時可達上千萬條)時就顯得效率依然不夠,不能滿 足日益增長的通信業(yè)務需求。
發(fā)明內容
本發(fā)明的目的是提供一種話單剔重方法和裝置,以解決現有的各類 話單的關鍵域信息不一樣、不易管理、可擴展性差,處理海量數據效率 不夠的問題。
為了實現以上目的,本發(fā)明提供了一種話單剔重方法,包括以下步
驟
步驟a:從話單中提取關鍵域信息;
步驟b:使用MD5算法對該關鍵域信息進行計算,生成該話單對應的MD5特征串;
步驟c:將所述MD5特征串,與索引文件中存儲的、正常話單對應的 MD5特征串進行比較,如果發(fā)現相同的MD5特征串,則該話單為重單, 對該話單進行剔除,否則將所述MD5特征串保存至索引文件中,并確認 該MD5特征串對應的話單為正常話單。
上述技術方案中,所述正常話單對應的MD5特征串以哈希表的方式 存儲于索引文件中;所述步驟c具體包括
步驟cl:對話單對應的MD5特征串,根據設定的哈希函數進行哈希
運算;
步驟c2:根據哈希運算得到的函數值,找到所述哈希表中的存儲節(jié)
點
步驟c3:如果在該存儲節(jié)點上找到與該話單對應的MD5特征串相同 的MD5特征串,則該話單為重單,剔除該話單;否則,將該話單對應的 MD5特征串插入到該存儲節(jié)點中,并確認該話單為正常話單。
上述技術方案中,所述哈希表中的存儲節(jié)點中的MD5特征串以鏈表 的方式或者平衡二叉樹的方式存儲。
上述技術方案中,當所述哈希表中的存儲節(jié)點中的MD5特征串以平 衡二叉樹的方式存儲時,將所述話單對應的MD5特征串插入到該話單存 儲節(jié)點中的步驟包括將該MD5特征串插入到該存儲節(jié)點上的平衡二叉 樹上,若插入的MD5特征串使得所述平衡二叉樹失去平衡時,則通過旋 轉進行調整。
優(yōu)選地,當所述話單為正常話單時,則輸出該話單,并輸出更新后 的索引增量文件。
優(yōu)選地,所述索引文件及索引增量文件,存儲于內存或磁盤中;若 內存占用量超過制定數值,則合并索引增量文件,將索引文件中時間較早的部分存儲到磁盤中,并自動釋放內存;若需要將磁盤中的索引文件 重新加載到內存時,則重新加載。
優(yōu)選地,所述關鍵域信息,包括但不限于由主叫號碼、被叫號碼、 通話時間、SP代碼組成的組合字段中的任意一種或集中的組合。
為了實現以上目的,本發(fā)明還提供了一種話單剔重裝置,包括提 取模塊,用于從話單中提取關鍵域信息;特征串生成模塊,用于使用MD5 算法對關鍵域信息進行計算,生成MD5特征串;比較剔重模塊,用于將 所述MD5特征串與索引文件中存儲的、正常話單對應的MD5特征串進行 比較;如果發(fā)現相同的MD5特征串,則該話單為重單,對該話單進行剔 除;否則將該話單對應的MD5特征串保存至索引文件中,并確認該話單 為正常話單。
優(yōu)選地,所述比較剔重模塊包括計算定位單元,用于根據設定的 哈希函數對所述MD5特征串進行哈希運算,并根據該運算所得的哈希函 數值,找到所述哈希表中的存儲節(jié)點;查找單元,用于在所述存儲節(jié)點 上查找與所述MD5特征串相同的特征串;剔重單元,用于根據所述查找 的結果確定所述話單是否為重單,如果在所述哈希表的存儲節(jié)點上找到 與所述特征串相同的MD5特征串,所述話單為重單,進行剔除,否則, 所述話單為正常話單。
優(yōu)先地,所述哈希表的存儲節(jié)點為一個鏈表或一顆平衡二叉樹。
優(yōu)先地,當所述哈希表中的存儲節(jié)點為一顆平衡二叉樹時,所述比 較剔重模塊還包括插入單元,用于將所述正常話單對應的MD5特征串 插入到所述平衡二叉樹上,同時輸出該正常話單及其索引增量文件;旋 轉單元,用于如果所述MD5特征串插入所述平衡二叉樹時,使所述平衡 二叉樹失去平衡,則通過該旋轉單元旋轉平衡二叉樹進行調整。
優(yōu)先地,該話單剔重裝置還包括加載模塊,用于根據需要將磁盤中的索引文件重新加載到內存。
本發(fā)明提供的話單剔重方法和裝置,綜合哈希表、平衡二叉樹和MD5 算法之長,實現了對任意業(yè)務、任意類型話單的有效處理,通過系統(tǒng)處 理之后形成唯一的剔重索引,且長度唯一,提高了剔重運行效率和可擴 展性,極大的節(jié)約了存儲空間。
圖1是本發(fā)明一種話單剔重方法實施例一的流程圖; 圖2是采用平^f軒二叉樹作為哈希表解決沖突的方案示意圖; 圖3是不平衡二叉樹示意圖; 圖4是平衡二叉樹示意圖5是本發(fā)明 一種話單剔重方法實施例二的流程圖; 圖6是平衡二叉樹旋轉示意圖; 圖7是在平衡二叉樹上查找MD5特征串的示意圖; 圖8是本發(fā)明一種話單剔重裝置實施例一的結構圖; 圖9是本發(fā)明一種話單剔重裝置實施例二的結構圖。
具體實施例方式
下面結合附圖,對本發(fā)明的具體實施方式
進行詳細描述。 方法實施例
如圖1所示公開了一種話單剔重方法實施例一的流程圖,下面將本 實施例中提到的技術術語介紹如下
MD5 (Message-Digest Algorithm 5, 4言息—摘要算法5)是一種用 于產生數字簽名的單項散列算法,它可以將一個任意長度的"字節(jié)串" 通過一個不可逆的字符串變換算法變換成一個16字節(jié)的串。利用MD5算法可以規(guī)范任意業(yè)務、任意類型的話單關鍵域信息組合,將其壓縮為一
個唯一的16字節(jié)的串。這樣,任意話單的關鍵域信息均可以統(tǒng)一管理, 統(tǒng)一存儲。而且, 一般話單的關鍵域信息均遠多于16字節(jié),因此將其變 換成16字節(jié)串進行管理和存儲,查找和比較時效率將明顯提高,同時也 能大大節(jié)約存儲成本。另外,通過MD5算法產生的16字節(jié)串是均勻分布 的,這非常有利于構造一個簡單而最優(yōu)的哈希函數進行定位,從而有效 的提高了處理效率。
哈希函數是一個多對一的映射,假設為y=F(x),可能會存在多個x 值對應一個y值,這稱之為哈希表的沖突。因此在使用哈希表時,必須 同時設計一個解決此沖突的方法,即在內存中如何存儲同一 y值對應的 多個x值,本發(fā)明不僅可使用鏈表來存儲這些數據,而且使用了平衡二 叉樹來解決哈希表沖突的問題。對于圖2的數據,哈希函數將l、 9、 l7、 25四個數值對應到函數值1, 11對應到函數值3等,對于函數值為1的 地址來說,1、 9、 17、 25這四個數據再以平4軒二叉樹這種數據結構來存 儲。
哈希表是指根據一個設定哈希函數,使得每個元素的關鍵字都與一 個哈希函數值相對應,并將其作為該關鍵字在哈希表中的存儲位置,即 哈希地址,從而消除了通過遍歷比較帶來的時間浪費,其關鍵在于設計 一個最優(yōu)的哈希函數和處理沖突的方法。平衡二叉樹是一棵空樹,或者 是一棵具有下列性質的二叉樹它的左子樹和右子樹都是平衡二叉樹, 且左子樹和右子樹的深度之差的絕對值不超過1,如圖3所示為一棵不 平衡二叉樹、圖4所示為一棵平衡二叉樹,時間復雜度在平均和最壞情 況下都是0(logn),查找效率非常高。在插入或刪除節(jié)點后,可能會失 去平衡,此時需要通過一次或多次旋轉來進行調整,使其保持平衡。
本發(fā)明 一種話單剔重方法實施例 一 包括以下步驟步驟S102,從話單中提取關鍵域信息,例如主叫號碼、被叫號碼、 通話時間、SP代碼等字l殳組合的任意一個或幾個的組合;
步驟S104,使用MD5算法對關鍵域信息進行計算,生成MD5特征串;
步驟S106,根據設定的哈希函數對在步驟S104中生成的MD5特征 串進行哈希運算,并根據計算所得哈希函數值將所述MD5特征串定位到 作為所述哈希表存儲節(jié)點的平衡二叉樹上;
步驟S108,在已完成定位的平衡二叉樹上查找在步驟S104中生成 的MD5特征串,如果在平衡二叉樹上找到與所述MD5特征串相同的MD5 特征串,跳轉到步驟SllO,否則跳轉到步驟S112;
步驟S110,如果在平衡二叉樹上找到與所述MD5特征串相同的MD5 特征串,則確定該話單為重單,將重單剔除;
步驟S112,如果在平衡二叉樹上沒有找到與所述MD5特征串相同的 MD5特征串,則確定話單不是重單,步驟結束。
本發(fā)明 一種話單剔重方法的實施例 一 綜合哈希表、平衡二叉樹和MD5 算法之長,實現了對任意業(yè)務、任意類型話單的有效處理,通過剔重系 統(tǒng)處理之后形成唯一的剔重索引,且長度唯一,提高了剔重運行效率和 可擴展性,極大的節(jié)約了存儲空間。
如圖5所示公開了一種話單剔重方法實施例二的流程圖,在實施例 一基礎上對方案進行了細化,包括以下步驟
步驟S202,將話單讀入系統(tǒng),話單剔重的步驟開始;
步驟S204,從話單中提取關鍵域信息,例如主叫號碼、被叫號碼、 通話時間、SP代碼等字段組合的任意一種或幾種的組合,正常話單所對 應的MD5特征串以哈希表的方式存儲于索引文件中,該索引文件存儲于 內存或磁盤中,該哈希表的沖突則通過平衡二叉樹來解決;
步驟S206,判斷內存中是否有存儲正常話單所對應的索引文件,如果有,跳轉到步驟S210,否則,跳轉到步驟S208;
步驟S208,如果內存中沒有存儲已處理話單的索引文件,將磁盤中 的索引文件重新加載到內存,繼續(xù)執(zhí)行步驟S210;
步驟S210,否則,使用MD5算法對關鍵域信息進行計算,生成MD5 特征串,MD5特征串為一個唯一的16字節(jié)串,每字節(jié)為8位二進制值, 如00000000 00000001 00000010 00000011 00000100 00000101 00000110 00000111 00001000 00001001 00001010 00001011 00001100 00001101 00001110 00010000;
步驟S212,由于步驟S210中生成的MD5特征串是均勻分布的,因 此哈希函數可以直接取MD5特征串的第一位或前兩位的值來將其定位到 對應的作為哈希表存儲節(jié)點的平衡二叉樹上,這樣一次哈希函數運算就 可以定位到原數據量的1/256或1/65536。在此,i兌明一次哈希函數運 算定位到原數據量的1/256或1/65536的原因MD5算法生成的是一個 16字節(jié)的特征串,如0123456789ABCDEF,其中每一位都為一個8位字節(jié), 即由8個二進制值組成,如01010101,因每個二進制位均有兩種可能的 取值,所以每字節(jié)可能的取值為256,即28,因此,如果取該16字節(jié)串 的第一位作為哈希函數值直接定址,則遍歷查找僅需要在后l5字節(jié)串進 行,對于均勻分布的數據來說,僅為16字節(jié)串取值的1/256,如果取前 兩位作為哈希函數值直接定址,則所需查找的數據則為16字節(jié)串的 1/65536。
步驟S214,在哈希函數定位的節(jié)點是一棵平衡二叉樹,在此平衡二 叉樹上查找MD5特征串,平衡二叉樹任意節(jié)點的左子樹為空或小于該節(jié) 點值,而右子樹為空或大于該節(jié)點值;如果該平衡二叉樹的根節(jié)點值為 空,則跳轉到步驟S216,如果該平衡二叉樹的根節(jié)點值等于該MD5特征 串,則該話單為重單,跳轉到步驟S226,如果該平衡二叉樹的根節(jié)點值不等于該MD5特征串,則跳轉到步驟S22^
步驟S216,如果該平衡二叉樹的根節(jié)點值為空,則該話單不是重單, 將該MD5特征串插入到此平衡二叉樹中,同時實施步驟S218;
步驟S218,如果該話單不是重單,將該MD5特征串插入到此平衡二 叉樹上的同時,輸出正確話單和索引增量文件,跳轉到步驟S220;
步驟S220,判斷插入該MD5特征串是否導致該平^"二叉樹失去平衡, 如果失去平衡,則跳轉到步驟S222,否則跳轉到步驟S228;
步驟S222,如果該平衡二叉樹失去平衡,則通過旋轉進行調整;平 衡二叉樹這種數據結構,任一節(jié)點值大于其左子樹而小于其右子樹的值, 而其左、右子樹的高度差不大于1,當在其中插入某數值時,可能導致 其左右子樹之差大于1,從而不再是平衡二叉樹,因此必須進行旋轉使 之保持平衡,例如圖3中節(jié)點6下面的最簡單的平衡二叉樹,如圖6所 示,根節(jié)點14的左子樹高度為0,右子樹高度為1,而當插入節(jié)點17時, 根節(jié)點14的左子樹高度為0,右子樹高度為2,不再為平衡二叉樹,需 對14旋轉為17的左子樹,而17為根節(jié)點,旋轉之后仍然是平衡的。對 于不平衡的二叉樹,其查找次數多于平衡二叉樹,上述示例說明對于 旋轉之前的不平衡的二叉樹,查找到22的比較次數為3,而對于旋轉后 的平衡二叉樹則為2,當左右子樹高度差較大時,其差異是很明顯的;
步驟S224,如果MD5特征串小于平衡二叉樹的根節(jié)點值,則繼續(xù)查 找根節(jié)點的左子樹,如果大于平衡二叉樹的根節(jié)點值,則繼續(xù)查找根節(jié) 點的右子樹,直到找到相同的節(jié)點值或某節(jié)點無相應的左子樹或右子樹 為止;如果找到相同的節(jié)點值,則該話單是重單,跳轉到步驟S226,如 果無相應的左子樹或右子樹,則該話單不是重單,跳轉到步驟Sn8;例 如,某條話單生成的MD5特征串,假設為1122000000000003,如圖7所 示,首先定位到哈希地址為11的平衡二叉樹,將MD5特征串與其根節(jié)點的值相比較,例如根節(jié)點AO為1123000000000000, MD5特征串小于根節(jié) 點,則再查找其左子樹的一艮節(jié)點AOl,如為1122000000000000,則繼續(xù) 查找A01的右子樹的根節(jié)點A012,如果A012的值為空該話單不是重單, 跳轉到步驟S218,如果A012的值為1122000000000003,該話單為重單, 跳轉到步驟S226,否則繼續(xù)查找其左子樹或右子樹; 步驟S226,如果該話單是重單,剔除該話單;
步驟S228,在執(zhí)行完剔重話單的過程以后,話單處理結束,當話單 剔重過程的內存占有量超過指定數值時,系統(tǒng)自動釋放內存,并合并索 引增量文件,在繼續(xù)處理下一個話單文件時,將根據需要重新加載索引 文件。
本發(fā)明一種話單剔重方法的實施例二利用MD5算法對話單關鍵域信 息進行運算,得到長度統(tǒng)一且唯一的MD5特征串,對正常話單其對應的 MD5特征串采用哈希表的方式存儲,哈希表的沖突則通過平衡二叉樹來 解決,將MD5特征串與平衡二叉樹的節(jié)點值進行比較,由此來判斷話單 是否是重單,實現了對任意業(yè)務、任意類型話單的剔重處理,提高了剔 重系統(tǒng)的剔重運行效率和可擴展性,極大的節(jié)約了存儲空間,節(jié)約的存 儲空間可達50°/。以上,通過哈希表和平衡二叉樹的組合來存儲已處理的 話單,具有效率高的特點。
除上述實施例外,本發(fā)明一種話單剔重方法利用MD5算法對話單關 鍵域信息進行運算,得到MD5特征串,該MD5特征串采用哈希表的方式 存儲,哈希表的沖突也可通過鏈表來解決,將MD5特征串與鏈表的節(jié)點 值進行比較,由此來判斷話單是否為重單,與上述實施例相似的方法也 可實現話單的剔重。
裝置實施例
如圖8所示,公開了本發(fā)明一種話單剔重裝置實施例一的結構圖,一種話單剔重裝置實施例一包括提取模塊1、特征串生成模塊2、比較剔 重模塊3:提取模塊l用于從話單中提取關鍵域信息;特征串生成模塊2 用于使用MD5算法對關鍵域信息進行計算,生成MD5特征串;比較剔重 模塊3:用于將所述MD5特征串與索引文件中存儲的、正常話單對應的 MD5特征串進行比較,如果發(fā)現相同的MD5特征串,則該話單為重單, 對該話單進行剔除;否則將該話單對應的MD5特征串保存至索引文件中, 并確認該話單為正常話單。
比較剔重模塊3包括計算定位單元4,用于根據設定的哈希函數 對所述MD5特征串進行哈希運算,并根據該運算所得的函數值,找到所 述哈希表中的存儲節(jié)點;查找單元5,用于在所述存儲節(jié)點上查找與所 述MD5特征串相同的特征串;剔重單元6,用于根據所述查找的結果確 定所述話單是否為重單,如果在所述哈希表的存儲節(jié)點上找到與所述特 征串相同的MD5特征串,所述話單為重單,進行剔除,否則,所述話單 為正常話單。
下面將一種話單剔重裝置實施例 一的工作流程描述如下 提取模塊1從話單中提取關鍵域信息,特征串生成模塊2根據MD5 算法對提取模塊1中生成的關鍵域信息進行計算,生成MD5特征串,比 較剔重模塊3中的計算定位單元4根據設定的哈希函數對特征串生成模 塊2生成的MD5特征串進行哈希運算,根據計算所得哈希函數值將該MD5
特征串定位到存儲索引文件的平衡二叉樹上,查找單元5在已完成定位 的平衡二叉樹上查找MD5特征串,查找單元5如果在平衡二叉樹上找到 與所述MD5特征串相同的MD5特征串,剔重單元6則確定話單為重單, 將重單剔除,查找單元5如果在平衡二叉樹上沒有找到與所述MD5特征 串相同的MD5特征串,剔重單元6則確定話單不是重單。
本發(fā)明 一種話單剔重裝置實施例一綜合了哈希表、平衡二叉樹和MD5算法的優(yōu)點,有效實現了對不同業(yè)務、不同類型話單的處理,生成了長
度統(tǒng)一且唯一的MD5特征串,才是高了話單剔重的效率,極大的節(jié)約了存 儲空間。
如圖9所示,公開了本發(fā)明一種話單剔重裝置實施例二的結構圖, 本發(fā)明一種話單剔重裝置的實施例二包括了一種話單剔重裝置實施例一 的全部模塊,此外,比較剔重模塊還包括插入單元7、旋轉單元8,話單 剔重裝置還包括加載模塊9:插入單元7用于如果剔重單元6確定話單 不是重單,將MD5特征串插入到平衡二叉樹上,同時輸出正確話單和索 引增量文件,旋轉單元8用于如果插入單元7插入的MD5特征串使平衡 二叉樹失去平衡,則通過旋轉單元8旋轉平衡二叉樹進行調整,加載模 塊9用于根據需要將磁盤中的索引文件重新加載到內存。
下面將一種話單剔重裝置實施例二的工作流程描述如下 提取模塊1從話單中提取關鍵域信息,例如主叫號碼、被叫號碼、 通話時間、SP代碼等字段組合的任意一個或幾個的組合,正常話單所對 應的MD5特征串以哈希表的方式存儲于索引文件中,該索引文件存儲于 內存或磁盤中,哈希表的沖突則通過平衡二叉樹來解決;特征串生成模 塊2根據MD5算法對提取模塊1中生成的關鍵域信息進行計算,生成MD5 特征串,比較剔重模塊3中的計算定位單元4根據設定的哈希函數對特 征串生成模塊2生成的MD5特征串進行哈希運算,并根據計算所得哈希 函數值將所述MD5特征串定位到作為所述哈希表存儲節(jié)點的平衡二叉樹 上,查找單元5在已完成定位的平衡二叉樹上查找MD5特征串,查找單 元5如果在平衡二叉樹上找到與該MD5特征串相同的MD5特征串,剔重 單元6則確定話單為重單,將重單剔除, 查找單元5如果在平衡二叉樹 上沒有找到與該MD5特征串相同的MD5特征串,剔重單元6則確定話單 不是重單,查找單元5在平衡二叉樹上查找MD5特征串的過程具體如方法實施例步驟S214、步驟S216、步驟S224所述;如果剔重單元6確定 話單不是重單,插入單元7將MD5特征串插入到平衡二叉樹上,同時輸 出正確話單和索引增量文件,如果插入單元7插入的MD5特征串使平衡 二叉樹失去平衡,旋轉單元8通過旋轉平衡二叉樹進行調整,在執(zhí)行完 剔重話單的過程以后,話單處理結束,當話單剔重過程的內存占有量超 過指定數值時,話單剔重裝置自動釋放內存,并合并索引增量文件,在 繼續(xù)處理下一個話單文件時,加載模塊9將根據需要重新加載索引文件。
本發(fā)明一種話單剔重裝置實施例二利用MD5算法對話單關鍵域信息 進行運算,得到長度統(tǒng)一且唯一的MD5特征串,正常話單所對應的MD5 特征串采用哈希表的方式存儲,哈希表的沖突則通過平衡二叉樹來解決, 將MD5特征串與平衡二叉樹的節(jié)點值進行比較,由此來判斷話單是否是 重單,實現了對任意業(yè)務、任意類型話單的剔重處理,提高了剔重系統(tǒng) 的剔重運行效率和可擴展性,極大的節(jié)約了存儲空間。
除上述實施例外,本發(fā)明一種話單剔重裝置,比較剔重模塊中的計 算定為單元中也可用鏈表來作為哈希表的存儲節(jié)點,將MD5特征串與鏈 表的節(jié)點值進行比較,由此來判斷話單是否為重單,與上述實施例相似 的結構也可實現話單的剔重功能。
以上公開的僅為本發(fā)明的幾個具體實施例,但是,本發(fā)明并非局限 于此,任何本領域的技術人員能思之的變化都應落入本發(fā)明的保護范圍。
權利要求
1. 一種話單剔重方法,其特征在于,該方法包括以下步驟步驟a從話單中提取關鍵域信息;步驟b使用MD5算法對所述關鍵域信息進行計算,生成該話單對應的MD5特征串;步驟c將所述MD5特征串,與索引文件中存儲的、正常話單對應的MD5特征串進行比較;如果發(fā)現相同的MD5特征串,則該話單為重單,對該話單進行剔除;否則將該話單對應的MD5特征串保存至索引文件中,并確認該話單為正常話單。
2. 根據權利要求1所述的話單剔重方法,其特征在于,所述正常 話單對應的MDS特征串,以哈希表的方式存儲于索引文件中;所述步驟 c具體包括步驟cl:對該話單對應的MD5特征串,根據設定的哈希函數進行哈 希運算;步驟"根據哈希運算得到的函數值,找到所述哈希表中的存儲節(jié)點;步驟c3:如果在該存儲節(jié)點上找到與該話單對應的MD5特征串相同 的MD5特征串,則該話單為重單,對該話單進行剔除;否則,將該話單對應的MD5 特征串插入到該存儲節(jié)點中,并確認該話單為正常話單。
3. 根據權利要求2所述的話單剔重方法,其特征在于,所述哈希 表中的存儲節(jié)點中的MD5特征串,以鏈表的方式或者平衡二叉樹的方式存儲。
4. 根據權利要求3所述的話單剔重方法,其特征在于,當所述哈希表中的存儲節(jié)點中的MD5特征串,以平衡二叉樹的方式存儲時,所述 步驟c3中,所述將該話單對應的MD5特征串插入到該存儲節(jié)點中的步驟 具體包括將該MD5特征串插入到該存儲節(jié)點上的平衡二叉樹上,若插入的MD5 特征串使得所述平衡二叉樹失去平衡時,則通過旋轉進行調整。
5. 根據權利要求1-4中任一所述的話單剔重方法,其特征在于, 當所述話單為正常話單時,則輸出該話單、并輸出更新后的索引增量文 件。
6. 根據權利要求5所述的話單剔重方法,其特征在于,所述索引 文件以及索引增量文件,存儲于內存或磁盤中。
7. 根據權利要求6所述的話單剔重方法,其特征在于,若內存占 用量超過指定數值,則合并索引增量文件,將索引文件中時間較早的部 分存儲到磁盤中,并自動釋放內存;若需要將磁盤中的索引文件重新加 載到內存時,則重新加載。
8. 根據權利要l-4中任一所述的話單剔重方法,其特征在于,所 述關鍵域信息包括由主叫號碼、被叫號碼、通話時間、SP代碼組成的 組合字段中的任意 一種或幾種的組合。
9. 一種話單剔重裝置,其特征在于,包括 提取模塊,用于從話單中提取關鍵域信息;特征串生成模塊,用于使用MD5算法對所述關鍵域信息進行計算, 生成MD5特征串;比較剔重模塊用于將所述MD5特征串與索引文件中存儲的、正常 話單對應的MD5特征串進行比較;若如果發(fā)現相同的MD5特征串,則該話單為重單,對該話單進行剔 除;否則將該話單對應的MD5特征串保存至索引文件中,并確認該話單為正常話單。
10、 根據權利要求9所述的話單剔重裝置,其特征在于,所述的比 較剔重模塊包括計算定位單元,用于根據設定的哈希函數對所述MD5特征串進行哈 希運算,并根據該運算所得的函數值,找到所述哈希表中的存儲節(jié)點; 查找單元,用于在所述存儲節(jié)點上查找與所述MD5特征串相同的特征串;剔重單元,用于才艮據所述查找的結果確定所述話單是否為重單,如 果在所述哈希表的存儲節(jié)點上找到與所述MD5特征串相同的MD5特征串,所述話單為重單,進行剔除,否則,所述話單為正常話單。
11、 根據權利要求10所述的話單剔重裝置,其特征在于,所述哈希 表的存儲節(jié)點為一個鏈表或一顆平衡二叉樹。
12、 根據權利要求10或11所述的話單剔重裝置,其特征在于,當 所述哈希表中的存儲節(jié)點為一顆平衡二叉樹時,所述比較剔重模塊還包 括插入單元,用于將所述正常話單對應的MD5特征串插入到所述平衡 二叉樹上,同時輸出該正常話單及其索引增量文件;旋轉單元,用于如果所述MD5特征串插入所述平衡二叉樹時,使所 述平衡二叉樹失去平衡,則通過所述旋轉單元旋轉平衡二叉樹進行調整。
13、 根據權利要求9所述的話單剔重裝置,其特征在于,還包括 加載模塊,用于根據需要將磁盤中的索引文件重新加載到內存。
全文摘要
本發(fā)明公開了一種話單剔重方法和裝置,主要應用于通信計費領域,包括以下步驟從話單中提取關鍵域信息;使用MD5算法對關鍵域信息進行計算,生成MD5特征串;將該MD5特征串與索引文件中存儲的、正常話單對應的MD5特征串進行比較,若發(fā)現相同的MD5特征串,則該話單為重單,進行剔除,否則將該話單對應的MD5特征串保存至索引文件中,并確認該話單為正常話單。本發(fā)明中,索引文件中MD5特征串以哈希表的方式存儲,該哈希表的沖突通過鏈表或平衡二叉樹來解決。本發(fā)明綜合哈希表、平衡二叉樹和MD5算法之長,實現了對任意業(yè)務、任意類型話單的有效處理,通過系統(tǒng)處理之后形成唯一的剔重索引,且長度唯一,提高了剔重運行效率和可擴展性,極大的節(jié)約了存儲空間。
文檔編號H04M15/00GK101442731SQ20081018327
公開日2009年5月27日 申請日期2008年12月12日 優(yōu)先權日2008年12月12日
發(fā)明者喜 劉, 暉 姜 申請人:中國移動通信集團安徽有限公司