專利名稱:一種話單排重方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及話單處理技術(shù),特別是指一種話單排重方法及裝置。
技術(shù)背景電信業(yè)務(wù)運(yùn)營(yíng)商在向用戶提供數(shù)據(jù)類業(yè)務(wù)服務(wù)過程中需要準(zhǔn)確記錄用戶使 用業(yè)務(wù)的信息,這些信息通常以話單形式體現(xiàn),作為計(jì)費(fèi)依據(jù)。話單文件的準(zhǔn) 確性直接影響用戶對(duì)業(yè)務(wù)的滿意程度,因而成為電信業(yè)務(wù)運(yùn)營(yíng)商最為關(guān)注的問題。導(dǎo)致話單文件不準(zhǔn)確的一個(gè)重要原因就是話單記錄重復(fù),產(chǎn)生話單記錄重 復(fù)的原因可能來(lái)自于業(yè)務(wù)引擎、管理系統(tǒng)和計(jì)費(fèi)系統(tǒng)等各個(gè)處理環(huán)節(jié)。在用于 計(jì)費(fèi)的話單文件正式生成之前,必須對(duì)話單記錄進(jìn)行排重處理,避免對(duì)用戶進(jìn) 行計(jì)費(fèi)的詳細(xì)話單中出現(xiàn)兩條完全相同的話單記錄。為了實(shí)現(xiàn)話單排重的處理,可以對(duì)每一條新的話單記錄都在所有已處理話 單文件中進(jìn)行查找,確定是否存在相同的話單記錄,如果存在,則表明當(dāng)前話單記錄是重復(fù)的話單記錄,直接丟棄該話單記錄;如果不存在,則將當(dāng)前話單 記錄寫入已處理的話單文件中。但是這種處理方式的處理效率非常差,無(wú)法對(duì) 大量話單記錄進(jìn)行排重處理,因此目前主要采用以下兩種處理方式來(lái)改善處理效率。一種處理方式是使用數(shù)據(jù)庫(kù)實(shí)現(xiàn)話單排重處理,即利用數(shù)據(jù)庫(kù)的唯一性約 束特性,針對(duì)話單文件中的關(guān)鍵字段建立唯一性索引,插入重復(fù)的話單記錄時(shí) 會(huì)破壞數(shù)據(jù)庫(kù)的唯一性約束,將使得話單記錄的插入失敗。但是這種處理方式 必須依賴高性能的數(shù)據(jù)庫(kù)系統(tǒng)來(lái)進(jìn)行話單排重,需要采購(gòu)專用的關(guān)系數(shù)據(jù)庫(kù)軟 件,成本非常高。
另一種處理方式是使用內(nèi)存進(jìn)行話單排重處理,即利用話單文件中的時(shí)間 順序特性,將相近時(shí)間的話單文件載入內(nèi)存,然后將載入的當(dāng)前話單記錄與載 入的話單文件進(jìn)行比較,如果時(shí)間相近且信息不一致,則表明當(dāng)前話單記錄不是重復(fù)的話單記錄,將當(dāng)前話單記錄寫入已處理話單文件中;如果時(shí)間相近且信息一致,則表明當(dāng)前話單記錄是重復(fù)的話單記錄,直^l妻丟棄該話單記錄;如果時(shí)間不一致,則表明對(duì)應(yīng)于當(dāng)前話單記錄的時(shí)間段的話單文件不在內(nèi)存中,使用頁(yè)面交換技術(shù)加載相近時(shí)間的話單文件,然后進(jìn)行話單排重處理。使用內(nèi)存進(jìn)行話單排重處理,雖然處理性能非常高,4旦是由于內(nèi)存容量有限,對(duì)于來(lái)自多個(gè)系統(tǒng)、時(shí)間離散的話單排重處理會(huì)導(dǎo)致內(nèi)存頻繁的文件頁(yè)面交換,造成系統(tǒng)負(fù)荷增加,處理性能降低;另外,使用內(nèi)存進(jìn)行話單排重,在出現(xiàn)宕機(jī)、 掉電和程序異常時(shí)容易丟失信息。發(fā)明內(nèi)容有鑒于此,本發(fā)明的主要目的在于提供一種話單排重方法及裝置,實(shí)現(xiàn)對(duì)話單記錄的快速有效重排處理。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種話單排重方法,該方法包含以下步驟A、提取當(dāng)前話單記錄的關(guān)鍵信息生成特征串;B 、通過特征串的規(guī)則計(jì)算定位特征串列表文件中的特征串文件;C、判斷是否在所述特征串文件中查找到當(dāng)前話單記錄的所述特征串,如果查找到,則直接丟棄當(dāng)前話單記錄;如果未查找到,則將當(dāng)前話單記錄寫入話單文件中。所述關(guān)^t信息為會(huì)話號(hào),或源號(hào)碼,或目的號(hào)碼,或發(fā)生時(shí)間,或業(yè)務(wù) 標(biāo)識(shí),或以上任意的組合。所述步驟A包括將關(guān)鍵信息按順序拼接組成特征串。所述步驟A進(jìn)一步包括使用沖突率低的散列算法計(jì)算關(guān)鍵信息的散列值 串,將得到的散列值串作為特征串。 所述步驟B包括確定當(dāng)前話單記錄的特征串的散列值,該散列值對(duì)設(shè)定整數(shù)作取模運(yùn)算,得到特征串文件名稱。所述步驟C包括C1 、判斷特征串列表文件中是否存在對(duì)應(yīng)于所述特征串文件名稱的特征串 文件,如果存在,則繼續(xù)執(zhí)行步驟C2,如果不存在,則繼續(xù)執(zhí)行步驟C3;C2、判斷是否在所述特征串文件中查找到當(dāng)前話單記錄的特征串,如果查 找到,則直接丟棄該話單記錄,結(jié)束當(dāng)前流程,如杲未查找到,則將當(dāng)前話單 記錄寫入話單文件中,并在所述特征串文件中添加當(dāng)前話單記錄的特征串;C3、將當(dāng)前話單記錄寫入話單文件中,并在特征串列表文件中創(chuàng)建對(duì)應(yīng)于 所述特征串文件名稱的特征串文件。步驟C2中所述添加當(dāng)前話單記錄的特征串之后,進(jìn)一步包括在特征串 之后附加換行符,單行存儲(chǔ)特征串文件中的特征串。該方法進(jìn)一步包括選取特征串中的有限字段作為索引字段,以索引字段 作為所述特征串列表文件的子目錄名,將所述特征串文件分散到不同的子目錄 中去。一種話單排重裝置,包括提取單元、生成單元、定位單元、搜索單元和 處理單元,其中,所述提取單元用于提取當(dāng)前話單記錄的關(guān)鍵信息;所述生成 單元用于根據(jù)所述關(guān)^t信息生成當(dāng)前話單記錄的特征串;所述定位單元用于通 過所述特征串的規(guī)則計(jì)算定位特征串列表文件中的特征串文件;所述搜索單元 用于確定是否在所述特征串文件中查找到當(dāng)前話單記錄的特征串,并向處理單 元提供查找結(jié)果;所述處理單元用于搜索單元未在特征串文件中查找到當(dāng)前話 單記錄的特征串時(shí),將當(dāng)前話單記錄寫入話單文件中。所述處理單元進(jìn)一步用于在特征串文件中添加當(dāng)前話單記錄的特征串,或 在在特征串列表文件中創(chuàng)建特征串文件。本發(fā)明基于文件系統(tǒng)的話單排重方案,是提取話單記錄中的關(guān)4建信息生成 特征串,按照一定規(guī)則將其存放在不同目錄下的不同文件中,處理一條話單記 錄時(shí),如果在對(duì)應(yīng)特征串文件中找到相同特征串的記錄則表示出現(xiàn)重復(fù),否則
將這條話單記錄寫入話單文件,并將特征串添加至對(duì)應(yīng)的特征串文件。直接使 用文件系統(tǒng)進(jìn)行話單排重處理,不需要專用數(shù)據(jù)庫(kù)系統(tǒng)和巨大的內(nèi)存,而是通 過提取話單記錄的關(guān)鍵信息生成特征串,均勻分散到眾多的小文件中,實(shí)現(xiàn)快 速定位查找,可靠性高,投資小,成本低,易于實(shí)施,便于移植,可以實(shí)現(xiàn)在 大時(shí)間跨度內(nèi)海量數(shù)據(jù)的高效話單排重。
圖1為本發(fā)明中話單排重流程圖;圖2為本發(fā)明中基本的特征串列表文件結(jié)構(gòu)示意圖;圖3為本發(fā)明中優(yōu)化的特征串列表文件結(jié)構(gòu)示意圖;圖4A為本發(fā)明中話單排重原來(lái)示意圖;圖4B為本發(fā)明中話單排重裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
本發(fā)明中,提取當(dāng)前話單記錄的關(guān)鍵信息生成特征串,通過該特征串的規(guī) 則計(jì)算定位特征串列表文件中的特征串文件,判斷是否在該特征串文件中查找 到當(dāng)前話單記錄的特征串,如果查找到,則表明當(dāng)前話單記錄是重復(fù)的話單記 錄,直接丟棄當(dāng)前話單記錄;如果未查找到,則將當(dāng)前話單記錄寫入話單文件 中。圖1為本發(fā)明中話單排重流程圖,如圖l所示,本發(fā)明中對(duì)話單進(jìn)行重排 的處理過程包括以下步驟步驟101 步驟102:輸入一條話單記錄,提取當(dāng)前話單記錄的關(guān)鍵信息生 成特征串。關(guān)鍵信息是指話單記錄中可以用于進(jìn)行話單排重處理的字段,例如,會(huì)話 號(hào)、源號(hào)碼、目的號(hào)碼、發(fā)生時(shí)間、業(yè)務(wù)標(biāo)識(shí)、以上字段的任意組合,等等, 可以使用這些關(guān)鍵信息按順序拼接組成特征串,用來(lái)唯一標(biāo)識(shí)一條話單記錄。 關(guān)鍵信息根據(jù)業(yè)務(wù)類型的不同,其種類和數(shù)量會(huì)有所不同。如果關(guān)鍵信息拼 后的特征串較長(zhǎng),為了提高匹配查找效率,可以使用沖突率低的散列算法計(jì)算 關(guān)鍵信息的散列值串,將得到的散列值串作為最終存儲(chǔ)的特征串。步驟103 步驟104:確定當(dāng)前話單記錄的特征串的散列值A(chǔ),散列值A(chǔ)對(duì) 整數(shù)N作取模運(yùn)算得到整數(shù)M, M即為特征串列表文件中對(duì)應(yīng)的特征串文件的 名稱,用于在特征串列表文件中定位相應(yīng)特征串文件。整數(shù)N為預(yù)先設(shè)定的整 數(shù),用于表示特征串列表文件中期望包含的特征串文件數(shù)量。散列值A(chǔ)就是將 任意長(zhǎng)度字符串的輸入,通過計(jì)算變換成整數(shù)輸出,該整數(shù)輸出就是整數(shù)散列 值。步驟105:判斷特征串列表文件中是否存在特征串文件M,如果存在,則 繼續(xù)執(zhí)行步驟106;如果不存在,則表明當(dāng)前話單記錄不是重復(fù)的話單記錄, 繼續(xù)執(zhí)行步驟107。步驟106:判斷是否在特征串文件M中查找到步驟101~步驟102中生成的 特征串,如果查找到,則表明當(dāng)前話單記錄是重復(fù)的話單記錄,直接丟棄該話 單記錄,結(jié)束當(dāng)前流程;如果未查找到,則表明當(dāng)前話單記錄不是重復(fù)的話單 記錄,將當(dāng)前話單記錄寫入話單文件中,并在特征串文件M中添加步驟101~ 步驟102中生成的特征串,結(jié)束當(dāng)前流程。為了提高查找效率,特征串文件中 的特征串可以單行存儲(chǔ),每個(gè)特征串之后附加一個(gè)換行符,即在特征串文件M 中添加的特征串之后附加換行符,單行存儲(chǔ)該特征串。步驟107:將當(dāng)前話單記錄寫入話單文件中,并在特征串列表文件中創(chuàng)建 特征串文件M,結(jié)束當(dāng)前流程。步驟103 步驟107描述的處理過程中,包含了特征串列表文件中特征串文 件的逐步生成過程,即起始情況下,根據(jù)話單記錄的關(guān)鍵信息生成的特征串無(wú) 法在特征串列表文件的特征串文件中查找到,則在特征串列表文件中建立新的 特征串文件;或者在相應(yīng)特征串文件中添加生成的特征串。經(jīng)過排重處理的話 單記錄越來(lái)越多后,特征串列表文件中包含的特征串文件也就越來(lái)越多,包含 的特征串的形式也就越來(lái)越多。步驟103 步驟106中,通過計(jì)算當(dāng)前話單記錄的特征串的散列值A(chǔ),將其 均勻分散存儲(chǔ)到特征串列表文件包含的N個(gè)話單特征串文件中,基本的特征串 列表文件的索引結(jié)構(gòu)如圖2所示,如果已進(jìn)行排重處理的話單文件中的話單記錄數(shù)量為Q條,每個(gè)特征串文件平均存放的特征串?dāng)?shù)量為^Q/N條,由于I與 Q是線性關(guān)系,當(dāng)Q較大時(shí),I也會(huì)較大,進(jìn)行特征串查找時(shí)的耗時(shí)也會(huì)增加, 為了提高查找效率,可以采用選取特征串中的有限字段作為索引字段,以索引 字段作為特征串列表文件的子目錄名,將特征串文件分散到不同的子目錄中去, 減少單層目錄下的文件數(shù)量,減小文件尺寸,提高特征串的查找效率,經(jīng)過優(yōu) 化的特征串列表文件的索引結(jié)構(gòu)如圖3所示。如果索引字段的取值有K種可能, 則特征串列表文件中特征串文件的數(shù)量增加為B^N條,每個(gè)特征串文件中平均 存放的特征串?dāng)?shù)量為I二Q/J^N條,能夠有效提高特征串的查找效率。進(jìn)一步地,可以選取不止一個(gè)索引字段作為子目錄名,即用于子目錄名稱 的索引字段可以選取多個(gè),使用多級(jí)子目錄的方法能夠進(jìn)一步減少特征串列表 中每個(gè)特征串文件的特征串?dāng)?shù)量,提高特征串的查找效率,但應(yīng)該取值有限且 分布均勻。但是,多級(jí)子目錄可能會(huì)導(dǎo)致特征串文件數(shù)量過多,造成進(jìn)行相同 定位文件時(shí)耗時(shí)增加,反而降低文件查找效率,實(shí)現(xiàn)時(shí)需要根據(jù)實(shí)際情況權(quán)tf 子目錄級(jí)數(shù),通常不超過三層。以索引字段作為子目錄名時(shí),進(jìn)行話單排重處理時(shí),首先根據(jù)當(dāng)前話單記 錄的特征串確定索引字段,然后確定索引字段的散列值,再確定定位子目錄文 件的整數(shù),根據(jù)特征串列表文件中是否存在相應(yīng)子目錄文件、及子目錄文件中 是否存在特征串進(jìn)行相應(yīng)處理。另外,如果選取的索引字段具有時(shí)間屬性,如年份、月份等,可以利用話 單在生成時(shí)間上相對(duì)集中的特性,定期清理超過一定時(shí)間期限的特征串文件, 保持穩(wěn)定的特征串查找效率。圖4A描述了一個(gè)本發(fā)明提供的系統(tǒng)的典型組成,其中話單排重裝置對(duì)多 個(gè)話單來(lái)源^T入的話單記錄進(jìn)行排重處理,最后得到經(jīng)過排重處理的話單文件 和重復(fù)的話單記錄,重復(fù)的話單記錄可以直接丟棄。圖4B為本發(fā)明中話單排重裝置結(jié)構(gòu)示意圖,如圖4B所示,話單排重裝置 單元、定位單元、搜索單元和處理單元,其中,提取單元 用于提取當(dāng)前話單記錄的關(guān)鍵信息,并向生成單元提供該關(guān)鍵信息;生成單元用于根據(jù)關(guān)鍵信息生成當(dāng)前話單記錄的特征串,并向定位單元提供該特征串; 定位單元用于通過該特征串的規(guī)則計(jì)算定位特征串列表文件中的特征串文件, 向搜索單元提供該特征串文件;搜索單元用于確定是否在特征串文件中查找到 當(dāng)前話單記錄的特征串,并向處理單元提供查找結(jié)果;處理單元用于搜索單元 未在特征串文件中查找到當(dāng)前話單記錄的特征串時(shí),將當(dāng)前話單記錄寫入話單 文件中。處理單元進(jìn)一步用于在特征串文件中添加當(dāng)前話單記錄的特征串,或在在 特征串列表文件中創(chuàng)建特征串文件。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種話單排重方法,其特征在于,該方法包含以下步驟A、提取當(dāng)前話單記錄的關(guān)鍵信息生成特征串;B、通過特征串的規(guī)則計(jì)算定位特征串列表文件中的特征串文件;C、判斷是否在所述特征串文件中查找到當(dāng)前話單記錄的所述特征串,如果查找到,則直接丟棄當(dāng)前話單記錄;如果未查找到,則將當(dāng)前話單記錄寫入話單文件中。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述關(guān)鍵信息為會(huì)話號(hào), 或源號(hào)碼,或目的號(hào)碼,或發(fā)生時(shí)間,或業(yè)務(wù)標(biāo)識(shí),或以上任意的組合。
3、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟A包括將關(guān)鍵 信息按順序拼接組成特征串。
4、 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述步驟A進(jìn)一步包括 使用沖突率低的散列算法計(jì)算關(guān)鍵信息的散列值串,將得到的散列值串作為特 征串。
5、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟B包括確定當(dāng) 前話單記錄的特征串的散列值,該散列值對(duì)設(shè)定整數(shù)作取模運(yùn)算,得到特征串 文件名稱。
6、 根據(jù)權(quán)利要求5所述的方法,其特征在于,所述步驟C包括C1 、判斷特征串列表文件中是否存在對(duì)應(yīng)于所述特征串文件名稱的特征串 文件,如果存在,則繼續(xù)執(zhí)行步驟C2,如果不存在,則繼續(xù)執(zhí)行步驟C3;C2、判斷是否在所述特征串文件中查找到當(dāng)前話單記錄的特征串,如果查 找到,則直接丟棄該話單記錄,結(jié)束當(dāng)前流程,如果未查找到,則將當(dāng)前話單 記錄寫入話單文件中,并在所述特征串文件中添加當(dāng)前話單記錄的特征串;C3、將當(dāng)前話單記錄寫入話單文件中,并在特征串列表文件中創(chuàng)建對(duì)應(yīng)于 所述特征串文件名稱的特征串文件。
7、 根據(jù)權(quán)利要求6所述的方法,其特征在于,步驟C2中所述添加當(dāng)前話單記錄的特征串之后,進(jìn)一步包括在特征串之后附加換行符,單行存儲(chǔ)特征 串文件中的特征串。
8、 根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括選取特 征串中的有限字段作為索引字段,以索引字段作為所述特征串列表文件的子目 錄名,將所述特征串文件分散到不同的子目錄中去。
9、 一種話單排重裝置,其特征在于,該裝置包括提取單元、生成單元、 定位單元、搜索單元和處理單元,其中,所述提取單元用于提取當(dāng)前話單記錄的關(guān)鍵信息; 所述生成單元用于根據(jù)所述關(guān)鍵信息生成當(dāng)前話單記錄的特征串; 所述定位單元用于通過所述特征串的規(guī)則計(jì)算定位特征串列表文件中的特 征串文件;所述搜索單元用于確定是否在所述特征串文件中查找到當(dāng)前話單記錄的特 征串,并向處理單元提供查找結(jié)果;所述處理單元用于搜索單元未在特征串文件中查找到當(dāng)前話單記錄的特征 串時(shí),將當(dāng)前話單記錄寫入話單文件中。
10、 根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述處理單元進(jìn)一步用于 在特征串文件中添加當(dāng)前話單記錄的特征串,或在在特征串列表文件中創(chuàng)建特 征串文件。
全文摘要
本發(fā)明公開了一種話單排重方法及裝置,提取話單記錄中的關(guān)鍵信息生成特征串,按照一定規(guī)則將其存放在不同目錄下的不同文件中,處理一條話單記錄時(shí),如果在對(duì)應(yīng)特征串文件中找到相同特征串的記錄則表示出現(xiàn)重復(fù),否則將這條話單記錄寫入話單文件,并將特征串添加至對(duì)應(yīng)的特征串文件。直接使用文件系統(tǒng)進(jìn)行話單排重處理,不需要專用數(shù)據(jù)庫(kù)系統(tǒng)和巨大的內(nèi)存,而是通過提取話單記錄的關(guān)鍵信息生成特征串,均勻分散到眾多的小文件中,實(shí)現(xiàn)快速定位查找,可靠性高,投資小,成本低,易于實(shí)施,便于移植,可以實(shí)現(xiàn)在大時(shí)間跨度內(nèi)海量數(shù)據(jù)的高效話單排重。
文檔編號(hào)H04M15/00GK101159795SQ200710176358
公開日2008年4月9日 申請(qǐng)日期2007年10月25日 優(yōu)先權(quán)日2007年10月25日
發(fā)明者華國(guó)棟 申請(qǐng)人:中興通訊股份有限公司