一種文檔的壓縮、解壓方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)處理的技術(shù)領(lǐng)域,特別是涉及一種文檔的壓縮方法、一種文檔的解壓方法、一種文檔的壓縮裝置和一種文檔的解壓裝置。
【背景技術(shù)】
[0002]為了構(gòu)建索引及更新索引,搜索引擎的網(wǎng)絡(luò)爬蟲(又稱蜘蛛,Spider)每天都要從互聯(lián)網(wǎng)抓取海量的網(wǎng)頁,數(shù)量高達(dá)幾十億的級(jí)別。
[0003]除了完全可以判別為垃圾的網(wǎng)頁,蜘蛛每天抓取的大部分網(wǎng)頁都會(huì)按照一定的格式存儲(chǔ)在數(shù)據(jù)庫中,這個(gè)數(shù)據(jù)庫一般稱為網(wǎng)頁庫。
[0004]經(jīng)過長(zhǎng)時(shí)間的積累,網(wǎng)頁庫中存儲(chǔ)了多達(dá)幾千億張網(wǎng)頁,平均每張?jiān)季W(wǎng)頁大小為30?50KB,幾千億張網(wǎng)頁的總存儲(chǔ)量十分之高。
[0005]因此,一般在存儲(chǔ)前都會(huì)對(duì)網(wǎng)頁庫中的網(wǎng)頁進(jìn)行壓縮,采用的壓縮算法有GZip,LZO, Zlib 等。
[0006]但是,這些壓縮算法都具有通用性,針對(duì)性較差,在壓縮網(wǎng)頁時(shí),壓縮率較低,占用較多的存儲(chǔ)空間。
【發(fā)明內(nèi)容】
[0007]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的一種文檔的壓縮方法、一種文檔的解壓方法和相應(yīng)的一種文檔的壓縮裝置、一種文檔的解壓裝置。
[0008]依據(jù)本發(fā)明的一個(gè)方面,提供了一種文檔的壓縮方法,包括:
[0009]提取預(yù)先存儲(chǔ)的多個(gè)文檔;
[0010]從所述多個(gè)文檔中查找內(nèi)容相似的多個(gè)目標(biāo)文檔,每個(gè)目標(biāo)文檔中具有行號(hào);
[0011]根據(jù)所述行號(hào)對(duì)所述多個(gè)目標(biāo)文檔進(jìn)行序列化,獲得一個(gè)或多個(gè)數(shù)據(jù)塊;
[0012]將所述一個(gè)或多個(gè)數(shù)據(jù)塊進(jìn)行壓縮處理,獲得壓縮對(duì)象。
[0013]可選地,所述從所述多個(gè)文檔中查找內(nèi)容相似的多個(gè)目標(biāo)文檔的步驟包括:
[0014]計(jì)算所述多個(gè)文檔的URL的相似性;
[0015]當(dāng)所述相似性超過預(yù)設(shè)的相似性閾值時(shí),確認(rèn)所述多個(gè)文檔為多個(gè)目標(biāo)文檔。
[0016]可選地,所述根據(jù)所述行號(hào)對(duì)所述多個(gè)目標(biāo)文檔進(jìn)行序列化,獲得一個(gè)或多個(gè)數(shù)據(jù)塊的步驟包括:
[0017]提取所述多個(gè)目標(biāo)文檔中,行號(hào)相同的文檔數(shù)據(jù);
[0018]將行號(hào)相同的文檔數(shù)據(jù)寫入同一個(gè)數(shù)據(jù)塊中。
[0019]可選地,所述根據(jù)所述行號(hào)對(duì)所述多個(gè)目標(biāo)文檔進(jìn)行序列化,獲得一個(gè)或多個(gè)數(shù)據(jù)塊的步驟還包括:
[0020]對(duì)所有多個(gè)目標(biāo)文檔行號(hào)相同的文檔數(shù)據(jù)進(jìn)行編號(hào)。
[0021]可選地,所述多個(gè)文檔以Host逆序的URL為行鍵,存儲(chǔ)在數(shù)據(jù)庫中。
[0022]根據(jù)本發(fā)明的另一方面,提供了一種文檔的解壓方法,包括:
[0023]提取預(yù)先壓縮的壓縮對(duì)象,所述壓縮對(duì)象中具有一個(gè)或多個(gè)數(shù)據(jù)塊;
[0024]對(duì)所述一個(gè)或多個(gè)數(shù)據(jù)塊進(jìn)行解壓處理;
[0025]根據(jù)行號(hào)對(duì)解壓處理之后的一個(gè)或多個(gè)數(shù)據(jù)塊進(jìn)行反序列化,獲得多個(gè)目標(biāo)文檔。
[0026]可選地,所述根據(jù)行號(hào)對(duì)解壓處理之后的數(shù)據(jù)塊進(jìn)行反序列化,獲得多個(gè)目標(biāo)文檔的步驟包括:
[0027]讀取解壓處理之后的一個(gè)或多個(gè)數(shù)據(jù)塊中的文檔數(shù)據(jù),所述文檔數(shù)據(jù)具有編號(hào)和行號(hào);
[0028]按照所述編號(hào)計(jì)算所述文檔數(shù)據(jù)所屬的目標(biāo)文檔;
[0029]將所述文檔數(shù)據(jù)按照所述行號(hào)寫入所述目標(biāo)文檔中。
[0030]根據(jù)本發(fā)明的另一方面,提供了一種文檔的壓縮裝置,包括:
[0031]文檔提取模塊,適于提取預(yù)先存儲(chǔ)的多個(gè)文檔;
[0032]目標(biāo)文檔查找模塊,適于從所述多個(gè)文檔中查找內(nèi)容相似的多個(gè)目標(biāo)文檔,每個(gè)目標(biāo)文檔中具有行號(hào);
[0033]序列化模塊,適于根據(jù)所述行號(hào)對(duì)所述多個(gè)目標(biāo)文檔進(jìn)行序列化,獲得一個(gè)或多個(gè)數(shù)據(jù)塊;
[0034]壓縮模塊,適于將所述一個(gè)或多個(gè)數(shù)據(jù)塊進(jìn)行壓縮處理,獲得壓縮對(duì)象。
[0035]可選地,所述目標(biāo)文檔查找模塊還適于:
[0036]計(jì)算所述多個(gè)文檔的URL的相似性;
[0037]當(dāng)所述相似性超過預(yù)設(shè)的相似性閾值時(shí),確認(rèn)所述多個(gè)文檔為多個(gè)目標(biāo)文檔。
[0038]可選地,所述序列化模塊還適于:
[0039]提取所述多個(gè)目標(biāo)文檔中,行號(hào)相同的文檔數(shù)據(jù);
[0040]將行號(hào)相同的文檔數(shù)據(jù)寫入同一個(gè)數(shù)據(jù)塊中。
[0041 ]可選地,所述序列化模塊還適于:
[0042]對(duì)所有多個(gè)目標(biāo)文檔行號(hào)相同的文檔數(shù)據(jù)進(jìn)行編號(hào)。
[0043]可選地,所述多個(gè)文檔以Host逆序的URL為行鍵,存儲(chǔ)在數(shù)據(jù)庫中。
[0044]根據(jù)本發(fā)明的另一方面,提供了一種文檔的解壓裝置,包括:
[0045]壓縮對(duì)象提取模塊,適于提取預(yù)先壓縮的壓縮對(duì)象,所述壓縮對(duì)象中具有一個(gè)或多個(gè)數(shù)據(jù)塊;
[0046]解壓模塊,適于對(duì)所述一個(gè)或多個(gè)數(shù)據(jù)塊進(jìn)行解壓處理;
[0047]反序列模塊,適于根據(jù)行號(hào)對(duì)解壓處理之后的一個(gè)或多個(gè)數(shù)據(jù)塊進(jìn)行反序列化,獲得多個(gè)目標(biāo)文檔。
[0048]可選地,所述反序列模塊還適于:
[0049]讀取解壓處理之后的一個(gè)或多個(gè)數(shù)據(jù)塊中的文檔數(shù)據(jù),所述文檔數(shù)據(jù)具有編號(hào)和行號(hào);
[0050]按照所述編號(hào)計(jì)算所述文檔數(shù)據(jù)所屬的目標(biāo)文檔;
[0051 ]將所述文檔數(shù)據(jù)按照所述行號(hào)寫入所述目標(biāo)文檔中。
[0052]本發(fā)明實(shí)施例針對(duì)內(nèi)容相似的多個(gè)目標(biāo)文檔,基于行號(hào)進(jìn)行序列化,進(jìn)而壓縮,獲得壓縮對(duì)象,利用了網(wǎng)頁本身的業(yè)務(wù)特性進(jìn)行壓縮,大大提高了壓縮率,減少了存儲(chǔ)空間的占用。
[0053]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
【附圖說明】
[0054]通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0055]圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種基于序列化的文檔壓縮方法實(shí)施例的步驟流程圖;
[0056]圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種網(wǎng)頁的結(jié)構(gòu)示例圖;
[0057]圖3示出了一種基于傳統(tǒng)壓縮方式壓縮文檔的示例圖;
[0058]圖4示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種基于序列化壓縮文檔的示例圖;
[0059]圖5示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種基于序列化的文檔解壓方法實(shí)施例的步驟流程圖;
[0060]圖6示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種基于序列化的文檔壓縮裝置實(shí)施例的結(jié)構(gòu)框圖;以及
[0061]圖7示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種基于序列化的文檔解壓裝置實(shí)施例的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0062]下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0063]參照?qǐng)D1,示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種文檔的壓縮方法實(shí)施例的步驟流程圖,具體可以包括如下步驟:
[0064]步驟101,提取預(yù)先存儲(chǔ)的多個(gè)文檔;
[0065]在本發(fā)明實(shí)施例中,爬蟲可以預(yù)先通過網(wǎng)頁間的鏈接關(guān)系,抓取互聯(lián)網(wǎng)的網(wǎng)頁,保存在網(wǎng)頁庫中,形成大量的搜索資源。
[0066]網(wǎng)頁,通常是基于HTML (HyperText Markup Language,超文本標(biāo)記語言)開發(fā),每一張網(wǎng)頁,也可以稱之為HTML文檔。
[0067]在本發(fā)明實(shí)施例中,由于網(wǎng)頁的數(shù)據(jù)量十分之巨大,因此,可以存儲(chǔ)在分布式的數(shù)據(jù)庫中,如HBase等,本發(fā)明實(shí)施例對(duì)此不加以限制。
[0068]由于相似塊結(jié)構(gòu)壓縮壓縮比更高,因此,多個(gè)文檔可以基于Key-Value的方式進(jìn)行存儲(chǔ),以Host (主機(jī))逆序的URL(Uniform Resource Locator,統(tǒng)一資源定位符)為行鍵,存儲(chǔ)在數(shù)據(jù)庫中。
[0069]當(dāng)然,HTML文檔除了上述存儲(chǔ)方式之外,還可以采用其他存儲(chǔ)方式,本發(fā)明實(shí)施例對(duì)此不