亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種數(shù)據(jù)存儲(chǔ)方法、數(shù)據(jù)讀取方法以及數(shù)據(jù)檢索方法

文檔序號(hào):6559468閱讀:252來源:國(guó)知局
專利名稱:一種數(shù)據(jù)存儲(chǔ)方法、數(shù)據(jù)讀取方法以及數(shù)據(jù)檢索方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)處理技術(shù),尤其涉及一種數(shù)據(jù)存儲(chǔ)方法、數(shù)據(jù)讀取方法以及數(shù)據(jù)檢索方法。
背景技術(shù)
隨著互聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,呈現(xiàn)在用戶面前的信息量也出現(xiàn)了爆炸性的增長(zhǎng)趨勢(shì),并且信息數(shù)據(jù)庫中所積累的數(shù)據(jù)和主題越來越多。為了能夠更好地保證用戶在較短的時(shí)間內(nèi)從海量數(shù)據(jù)中查找到所需的信息,搜索引擎技術(shù)應(yīng)運(yùn)而生。此項(xiàng)技術(shù)作為網(wǎng)頁搜索、新聞搜索、音樂搜索、圖片搜索以及地圖搜索等業(yè)務(wù)的核心,具有不可估量的使用價(jià)值和商業(yè)價(jià)值。
索引模塊是搜索引擎中的關(guān)鍵部分,該模塊為關(guān)鍵詞檢索提供數(shù)據(jù)來源和訪問接口。換言之,索引模塊對(duì)原始數(shù)據(jù)進(jìn)行分詞操作,并利用索引方法處理所獲得的各個(gè)單詞,建立索引并寫入用于保存索引數(shù)據(jù)的文件。在檢索數(shù)據(jù)時(shí),讀取保存索引數(shù)據(jù)的文件,獲取檢索結(jié)果。
業(yè)界衡量檢索性能的指標(biāo)主要包括數(shù)據(jù)量和對(duì)用戶的檢索請(qǐng)求的響應(yīng)時(shí)間。數(shù)據(jù)量越大、響應(yīng)時(shí)間越短,則檢索性能越好。就目前的情況而言,搜索引擎所處理的是海量數(shù)據(jù),并且對(duì)于用戶的檢索請(qǐng)求的響應(yīng)時(shí)間在0.1秒的級(jí)別。而檢索過程中用于對(duì)文件進(jìn)行讀取和寫入的文件輸入輸出(IO)操作需要耗費(fèi)較長(zhǎng)的時(shí)間,是檢索性能的瓶頸。為了提高檢索性能,通常將諸如訪問率較高或者最近被訪問等的數(shù)據(jù)放入緩沖區(qū)(cache)中,在進(jìn)行數(shù)據(jù)檢索時(shí),優(yōu)先訪問cache,如果能夠命中檢索結(jié)果,則無需進(jìn)行文件IO操作,有效地縮短了響應(yīng)時(shí)間,提高檢索性能。
在目前的數(shù)據(jù)檢索方法中,通常將未經(jīng)過任何處理的數(shù)據(jù)直接放入到cache中,以備檢索。由于cache的物理內(nèi)存無法無限制的擴(kuò)大,則在cache空間一定的情況下,能夠保存其內(nèi)的數(shù)據(jù)量有限,因此檢索結(jié)果的命中率受到cache空間的限制,從而檢索性能較低。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種數(shù)據(jù)存儲(chǔ)方法,能夠增加固定內(nèi)存空間中的數(shù)據(jù)存儲(chǔ)量。本發(fā)明的數(shù)據(jù)存儲(chǔ)方法中,預(yù)先設(shè)置壓縮編碼信息,表示壓縮編碼方式對(duì)應(yīng)的數(shù)據(jù)類型,當(dāng)緩沖區(qū)中存在剩余空間時(shí),根據(jù)所述壓縮編碼信息,將待存儲(chǔ)數(shù)據(jù)進(jìn)行字節(jié)復(fù)用、差分編碼和整數(shù)壓縮方式的壓縮編碼,并將壓縮編碼結(jié)果保存在所述緩沖區(qū)中。
其中,將待存儲(chǔ)數(shù)據(jù)進(jìn)行字節(jié)復(fù)用方式的壓縮編碼為從所述待存儲(chǔ)數(shù)據(jù)中選擇出單項(xiàng)數(shù)據(jù)長(zhǎng)度小于1字節(jié)并且能夠合并到1字節(jié)中的多項(xiàng)數(shù)據(jù),將所選擇出的多項(xiàng)數(shù)據(jù)用1字節(jié)表示,并將字節(jié)復(fù)用方式的壓縮編碼結(jié)果代替所選擇出的多項(xiàng)數(shù)據(jù),放入待存儲(chǔ)數(shù)據(jù)中。
較佳地,所述進(jìn)行字節(jié)復(fù)用方式的壓縮編碼之前,進(jìn)一步包括根據(jù)壓縮編碼信息,判斷待存儲(chǔ)數(shù)據(jù)中是否存在字節(jié)復(fù)用方式對(duì)應(yīng)的數(shù)據(jù)類型,如果是,則執(zhí)行所述字節(jié)復(fù)用方式的壓縮編碼;否則,執(zhí)行所述差分編碼方式的壓縮編碼。
其中,所述將待存儲(chǔ)數(shù)據(jù)進(jìn)行差分編碼方式的壓縮編碼為從所述待存儲(chǔ)數(shù)據(jù)中選擇出有序的整數(shù)序列,將有序的整數(shù)序列轉(zhuǎn)換為差分序列,并將差分編碼方式的壓縮編碼結(jié)果代替被選擇出的有序的整數(shù)序列,放入待存儲(chǔ)數(shù)據(jù)中。
較佳地,所述字節(jié)復(fù)用方式的壓縮編碼與差分編碼方式的壓縮編碼之間,進(jìn)一步包括根據(jù)所述壓縮編碼信息,判斷待存儲(chǔ)數(shù)據(jù)中是否存在差分編碼方式對(duì)應(yīng)的有序的整數(shù)序列,如果是,則執(zhí)行所述差分編碼方式對(duì)應(yīng)的壓縮編碼;否則,執(zhí)行所述整數(shù)壓縮方式的壓縮編碼。
其中,所述將待存儲(chǔ)數(shù)據(jù)進(jìn)行整數(shù)壓縮方式的壓縮編碼為從所述待存儲(chǔ)數(shù)據(jù)中選擇出整數(shù)數(shù)據(jù),根據(jù)所選擇的整數(shù)數(shù)據(jù)的實(shí)際大小,確定該整數(shù)數(shù)據(jù)所需的數(shù)據(jù)長(zhǎng)度,按照所確定的數(shù)據(jù)長(zhǎng)度表示該整數(shù)數(shù)據(jù),并將整數(shù)壓縮方式的壓縮編碼結(jié)果代替被選擇出的整數(shù)數(shù)據(jù),放入待存儲(chǔ)數(shù)據(jù)中。
較佳地,所述差分編碼方式的壓縮編碼與整數(shù)壓縮方式的壓縮編碼之間,進(jìn)一步包括根據(jù)所述壓縮編碼信息,判斷待存儲(chǔ)數(shù)據(jù)中是否存在整數(shù)壓縮方式對(duì)應(yīng)的整數(shù)數(shù)據(jù),如果是,則執(zhí)行所述整數(shù)壓縮方式對(duì)應(yīng)的壓縮編碼;否則,執(zhí)行所述將壓縮編碼結(jié)果保存在所述緩沖區(qū)中的操作。
相應(yīng)于上述數(shù)據(jù)存儲(chǔ)方法,本發(fā)明提供一種數(shù)據(jù)讀取方法,能夠從存儲(chǔ)有經(jīng)過壓縮編碼的數(shù)據(jù)的cache中獲取到原始數(shù)據(jù)。本發(fā)明的數(shù)據(jù)讀取方法中,預(yù)先獲取表示壓縮編碼方式對(duì)應(yīng)的數(shù)據(jù)類型的壓縮編碼信息,并且將待讀取數(shù)據(jù)從緩沖區(qū)中讀出,根據(jù)壓縮編碼信息,對(duì)被讀出的數(shù)據(jù)進(jìn)行整數(shù)壓縮方式、差分編碼方式以及字節(jié)復(fù)用方式對(duì)應(yīng)的解碼,得到讀取結(jié)果。
其中所述對(duì)被讀出的數(shù)據(jù)進(jìn)行整數(shù)壓縮方式對(duì)應(yīng)的解碼為根據(jù)所述壓縮編碼信息,從被讀出的數(shù)據(jù)中選擇出經(jīng)過整數(shù)壓縮方式的壓縮編碼的數(shù)據(jù),還原為執(zhí)行整數(shù)壓縮之前的數(shù)值,并將得到的解碼結(jié)果代替所選擇的數(shù)據(jù),放入被讀出的數(shù)據(jù)中。
較佳地,所述整數(shù)壓縮方式對(duì)應(yīng)的解碼之前,進(jìn)一步包括根據(jù)壓縮編碼信息,判斷被讀出的數(shù)據(jù)中是否存在經(jīng)過整數(shù)壓縮方式的壓縮編碼的數(shù)據(jù),如果是,則執(zhí)行所述整數(shù)壓縮方式對(duì)應(yīng)的解碼;否則,執(zhí)行差分方式對(duì)應(yīng)的解碼。
其中,所述對(duì)被讀出的數(shù)據(jù)進(jìn)行差分編碼方式對(duì)應(yīng)的解碼為根據(jù)所述壓縮編碼信息,從被讀出的數(shù)據(jù)中選擇出經(jīng)過差分編碼方式的壓縮編碼的數(shù)據(jù),轉(zhuǎn)換為有序的整數(shù)序列,并得到的解碼結(jié)果代替所選擇的數(shù)據(jù),放入被讀出的數(shù)據(jù)中。
較佳地,所述整數(shù)壓縮方式對(duì)應(yīng)的解碼與差分編碼對(duì)應(yīng)的解碼之間,進(jìn)一步包括根據(jù)壓縮編碼信息,判斷被讀出的數(shù)據(jù)中是否存在經(jīng)過差分編碼方式的壓縮編碼的數(shù)據(jù),如果是,則執(zhí)行所述差分編碼方式對(duì)應(yīng)的解碼;否則,執(zhí)行字節(jié)復(fù)用方式對(duì)應(yīng)的解碼。
其中,所述對(duì)被讀出的數(shù)據(jù)進(jìn)行字節(jié)復(fù)用方式對(duì)應(yīng)的解碼為根據(jù)所述壓縮編碼信息,從被讀出的數(shù)據(jù)中選擇出經(jīng)過字節(jié)復(fù)用方式的壓縮編碼的數(shù)據(jù),將壓縮于1字節(jié)中的多項(xiàng)數(shù)據(jù)分別用1字節(jié)表示,并將得到的解碼結(jié)果代替所選擇的數(shù)據(jù),放入被讀出的數(shù)據(jù)中。
較佳地,所述差分編碼方式對(duì)應(yīng)的解碼與字節(jié)復(fù)用方式對(duì)應(yīng)的解碼之間,進(jìn)一步包括根據(jù)壓縮編碼信息,判斷被讀出的數(shù)據(jù)中是否存在經(jīng)過字節(jié)復(fù)用方式對(duì)應(yīng)的數(shù)據(jù),如果是,則執(zhí)行所述字節(jié)復(fù)用方式對(duì)應(yīng)的解碼;否則,執(zhí)行所述得到讀取結(jié)果的操作。
本發(fā)明還提供一種數(shù)據(jù)檢索方法,能夠提高檢索結(jié)果的命中率。本發(fā)明的數(shù)據(jù)檢索方法中,預(yù)先設(shè)置壓縮編碼信息,表示壓縮編碼方式對(duì)應(yīng)的數(shù)據(jù)類型,該方法包括以下步驟A.在接收到來自于用戶的檢索請(qǐng)求時(shí),判斷該檢索請(qǐng)求對(duì)應(yīng)的索引數(shù)據(jù)是否在緩沖區(qū)中,如果是,則執(zhí)行步驟B;否則,執(zhí)行步驟C;B.從緩沖區(qū)中讀取出該索引數(shù)據(jù),根據(jù)壓縮編碼信息進(jìn)行整數(shù)壓縮、差分編碼以及字節(jié)復(fù)用方式對(duì)應(yīng)的解碼,將解碼結(jié)果作為檢索結(jié)果,返回給用戶,并結(jié)束本數(shù)據(jù)檢索流程;C.從索引文件中讀取檢索請(qǐng)求對(duì)應(yīng)的索引數(shù)據(jù),作為檢索結(jié)果,在符合存放策略時(shí),根據(jù)壓縮編碼信息,將索引數(shù)據(jù)進(jìn)行字節(jié)復(fù)用、差分編碼以及整數(shù)壓縮方式的壓縮編碼后放入所述緩沖區(qū)中,再將檢索結(jié)果返回給用戶。
其中,所述將索引數(shù)據(jù)進(jìn)行字節(jié)復(fù)用方式的壓縮編碼為從索引數(shù)據(jù)中選擇出單項(xiàng)數(shù)據(jù)長(zhǎng)度小于1字節(jié)并且能夠合并到1字節(jié)中的多項(xiàng)數(shù)據(jù),將所選擇出的多項(xiàng)數(shù)據(jù)用1字節(jié)表示,并將字節(jié)復(fù)用方式的壓縮編碼結(jié)果代替所選擇出的多項(xiàng)數(shù)據(jù),放入所述索引數(shù)據(jù)中;所述進(jìn)行字節(jié)復(fù)用方式對(duì)應(yīng)的解碼為根據(jù)所述壓縮編碼信息,從被讀出的索引數(shù)據(jù)中選擇出經(jīng)過字節(jié)復(fù)用方式的壓縮編碼的數(shù)據(jù),將壓縮于1字節(jié)中的多項(xiàng)數(shù)據(jù)分別用1字節(jié)表示,并將得到的解碼結(jié)果代替所選擇的數(shù)據(jù),放入被讀出的索引數(shù)據(jù)中。
其中,所述將索引數(shù)據(jù)進(jìn)行差分編碼方式的壓縮編碼為從索引數(shù)據(jù)中選擇出有序的整數(shù)序列,將有序的整數(shù)序列轉(zhuǎn)換為差分序列,并將差分編碼方式的壓縮編碼結(jié)果代替被選擇出的有序的整數(shù)序列,放入待存儲(chǔ)數(shù)據(jù)中;所述進(jìn)行差分編碼方式對(duì)應(yīng)的解碼為根據(jù)所述壓縮編碼信息,從被讀出的索引數(shù)據(jù)中選擇出經(jīng)過差分編碼方式的壓縮編碼的數(shù)據(jù),轉(zhuǎn)換為有序的整數(shù)序列,并得到的解碼結(jié)果代替所選擇的數(shù)據(jù),放入被讀出的索引數(shù)據(jù)中。
其中,所述將索引數(shù)據(jù)進(jìn)行整數(shù)壓縮方式的壓縮編碼為從索引數(shù)據(jù)中選擇出整數(shù)數(shù)據(jù),根據(jù)所選擇的整數(shù)數(shù)據(jù)的實(shí)際大小,確定該整數(shù)數(shù)據(jù)所需的數(shù)據(jù)長(zhǎng)度,按照所確定的數(shù)據(jù)長(zhǎng)度表示該整數(shù)數(shù)據(jù),并將整數(shù)壓縮方式的壓縮編碼結(jié)果代替被選擇出的整數(shù)數(shù)據(jù),放入索引數(shù)據(jù)中;所述進(jìn)行整數(shù)壓縮方式對(duì)應(yīng)的解碼為根據(jù)所述壓縮編碼信息,從被讀出的索引數(shù)據(jù)中選擇出經(jīng)過整數(shù)壓縮方式的壓縮編碼的數(shù)據(jù),還原為執(zhí)行整數(shù)壓縮之前的數(shù)值,并將得到的解碼結(jié)果代替所選擇的數(shù)據(jù),放入被讀出的索引數(shù)據(jù)中。
較佳地,預(yù)先設(shè)置表示允許緩沖區(qū)中的索引數(shù)據(jù)被替換的替換條件,步驟C所述進(jìn)行壓縮編碼之前,進(jìn)一步包括C01.判斷所述緩沖區(qū)中是否存在剩余空間,如果是,則繼續(xù)執(zhí)行所述壓縮編碼;否則,執(zhí)行步驟C02;C02.根據(jù)預(yù)先設(shè)置的替換條件,判斷是否利用所述從文件中讀取的索引數(shù)據(jù)替換緩沖區(qū)中的原索引數(shù)據(jù),如果是,則確定并刪除被替換的原索引數(shù)據(jù),再僅需執(zhí)行所述壓縮編碼;否則,執(zhí)行所述將檢索結(jié)果返回給用戶的操作。
由上述方案可知,在本發(fā)明的數(shù)據(jù)存儲(chǔ)方法中,將待存儲(chǔ)數(shù)據(jù)經(jīng)過字節(jié)復(fù)用、差分編碼以及整數(shù)壓縮等方式的壓縮編碼后,放入cache中。這樣能夠減少數(shù)據(jù)占用的空間,增加固定空間的cache的數(shù)據(jù)存儲(chǔ)量。在本發(fā)明的數(shù)據(jù)讀取方法中,將數(shù)據(jù)從cache中取出后,根據(jù)預(yù)先獲知的壓縮編碼信息對(duì)數(shù)據(jù)進(jìn)行解碼,還原成原始數(shù)據(jù),保證了數(shù)據(jù)讀取的正確性。
另外,在本發(fā)明的數(shù)據(jù)檢索方法中,由于索引數(shù)據(jù)經(jīng)過壓縮編碼之后放入cache中,減小了每條索引數(shù)據(jù)占用的空間,增加了具有固定空間的cache的數(shù)據(jù)存儲(chǔ)量;在數(shù)據(jù)檢索時(shí),較多的索引數(shù)據(jù)都能夠在cache中找到,有效地提高了數(shù)據(jù)檢索的命中率。并且,由于檢索過程中訪問cache的次數(shù)較多,因而大大降低了從索引文件中讀取索引數(shù)據(jù)的幾率,減少了因執(zhí)行文件IO而耗費(fèi)的時(shí)間,從而有效地提高了海量數(shù)據(jù)情況下數(shù)據(jù)檢索的效率。此外,在從索引文件中讀取到索引數(shù)據(jù)時(shí),如果該索引數(shù)據(jù)符合搜索引擎中存放策略、替換條件的要求,則將該索引數(shù)據(jù)存入cache中,從而能夠根據(jù)用戶的檢索需求及時(shí)更新cache,保證數(shù)據(jù)檢索的高效率。


下面將通過參照附圖詳細(xì)描述本發(fā)明的示例性實(shí)施例,使本領(lǐng)域的普通技術(shù)人員更清楚本發(fā)明的上述及其它特征和優(yōu)點(diǎn),附圖中圖1為本發(fā)明實(shí)施例中數(shù)據(jù)存儲(chǔ)方法的流程圖;圖2為本發(fā)明實(shí)施例中數(shù)據(jù)讀取存儲(chǔ)方法的流程圖;圖3為本發(fā)明中數(shù)據(jù)檢索方法的示例性流程圖;圖4為本發(fā)明實(shí)施例中數(shù)據(jù)檢索方法的流程圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案更加清楚明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明做進(jìn)一步的詳細(xì)說明。
本發(fā)明提供一種數(shù)據(jù)存儲(chǔ)方法,其基本思想是當(dāng)緩沖區(qū)中存在剩余的空間時(shí),將數(shù)據(jù)進(jìn)行壓縮編碼后存入內(nèi)存中。
壓縮編碼的方式包括整數(shù)壓縮、差分編碼、字節(jié)復(fù)用,上述三種壓縮編碼方式的執(zhí)行順序?yàn)槭紫葓?zhí)行字節(jié)復(fù)用,而后執(zhí)行差分編碼,最后執(zhí)行整數(shù)壓縮。在實(shí)際的應(yīng)用中,由于數(shù)據(jù)的類型決定了該數(shù)據(jù)能夠被執(zhí)行上述何種方式的壓縮編碼,這樣,只要確定待存儲(chǔ)數(shù)據(jù)包含的全部數(shù)據(jù)類型,即可確定執(zhí)行的壓縮編碼方式以及每種方式對(duì)應(yīng)的數(shù)據(jù)位置。這里,各壓縮編碼方式以及對(duì)應(yīng)的數(shù)據(jù)類型被稱作壓縮編碼信息。
圖1示出了本發(fā)明實(shí)施例中數(shù)據(jù)存儲(chǔ)方法的流程圖。如圖1所示,本實(shí)施例中的數(shù)據(jù)存儲(chǔ)方法包括在步驟101~102中,在cache中存在剩余空間時(shí),判斷當(dāng)前待存儲(chǔ)的數(shù)據(jù)中是否存在能夠進(jìn)行字節(jié)復(fù)用的數(shù)據(jù),如果是,則對(duì)能夠進(jìn)行字節(jié)復(fù)用的數(shù)據(jù)進(jìn)行字節(jié)復(fù)用方式的壓縮編碼,將經(jīng)過字節(jié)復(fù)用的數(shù)據(jù)和未經(jīng)壓縮編碼的數(shù)據(jù)作為當(dāng)前的待存儲(chǔ)數(shù)據(jù),并執(zhí)行步驟103;否則,直接執(zhí)行步驟103。
本實(shí)施例中,預(yù)先在內(nèi)存中申請(qǐng)固定大小的空間作為cache,用于保存待存儲(chǔ)數(shù)據(jù)。由于cache中的空間有限,因此只能在cache中存在剩余空間時(shí),才能夠放入數(shù)據(jù)。
字節(jié)復(fù)用是指將單項(xiàng)數(shù)據(jù)長(zhǎng)度小于1字節(jié)并且能夠合并到1字節(jié)中的多項(xiàng)數(shù)據(jù)用1字節(jié)表示。因此,上述待存儲(chǔ)的數(shù)據(jù)中如果包含有單項(xiàng)數(shù)據(jù)長(zhǎng)度小于1字節(jié)并且能夠合并到1字節(jié)中的多項(xiàng)數(shù)據(jù),則判定存在能夠進(jìn)行字節(jié)復(fù)用的數(shù)據(jù);否則,判定不存在能夠進(jìn)行字節(jié)復(fù)用的數(shù)據(jù)。
例如存在字體大小、大小寫、是否加重以及出現(xiàn)位置四種類型的數(shù)據(jù),其中字體大小的取值范圍為1~32,數(shù)據(jù)長(zhǎng)度為5比特(bit);大小寫的取值為大寫或者小寫,數(shù)據(jù)長(zhǎng)度為1bit;是否加重的取值為加重或者不加重,數(shù)據(jù)長(zhǎng)度為1bit;出現(xiàn)位置的取值為標(biāo)題或者正文,數(shù)據(jù)長(zhǎng)度為1bit。由于1字節(jié)包括8bit,那么,上述的四種數(shù)據(jù)能夠用1字節(jié)來表示,而無需每種數(shù)據(jù)都占用1字節(jié)。
在確定待存儲(chǔ)數(shù)據(jù)中包含能夠字節(jié)復(fù)用的數(shù)據(jù)后,將所確定的能夠字節(jié)復(fù)用的數(shù)據(jù)選擇出來,再進(jìn)行字節(jié)復(fù)用方式的壓縮編碼,并用字節(jié)復(fù)用的結(jié)果代替被選擇的數(shù)據(jù),放入到待存儲(chǔ)數(shù)據(jù)中,以便后續(xù)步驟中對(duì)此時(shí)形成的帶存儲(chǔ)數(shù)據(jù)進(jìn)行壓縮編碼。
在步驟103~104中,判斷當(dāng)前的待存儲(chǔ)數(shù)據(jù)中是否存在有序的整數(shù)數(shù)據(jù),如果是,則對(duì)有序的整數(shù)數(shù)據(jù)進(jìn)行差分編碼方式的壓縮編碼,將經(jīng)過差分編碼的數(shù)據(jù)和未經(jīng)壓縮編碼的數(shù)據(jù)作為當(dāng)前的待存儲(chǔ)數(shù)據(jù),并執(zhí)行步驟105;否則,直接執(zhí)行步驟105。
本實(shí)施例中,有序的整數(shù)數(shù)據(jù)是指數(shù)據(jù)中的多個(gè)整數(shù)數(shù)值為遞增或者遞減的有序整數(shù)序列形式。例如,文檔為2006年世界杯將在德國(guó)舉行,我們期待世界杯的到來;待存儲(chǔ)數(shù)據(jù)為“世界杯”這一單詞出現(xiàn)在該文檔中的位置,即該單詞為文檔中的第幾個(gè)單詞,則該數(shù)據(jù)中包括3和10兩個(gè)數(shù)值。因此上述類型的待存儲(chǔ)數(shù)據(jù)是有序整數(shù)數(shù)據(jù)。
在進(jìn)行差分編碼時(shí),將有序的整數(shù)序列轉(zhuǎn)換為差分序列。具體而言,有序整數(shù)序列中的第一個(gè)元素保持不變,此后的每個(gè)元素均表示為該元素的原數(shù)值與前一元素的數(shù)值之差。對(duì)于由3和10組成的有序整數(shù)序列而言,轉(zhuǎn)換后的差分序列為3,7。在完成差分編碼后,將差分編碼結(jié)果代替被差分編碼的數(shù)據(jù),放入待存儲(chǔ)數(shù)據(jù),以便后續(xù)步驟中對(duì)此時(shí)形成的待存儲(chǔ)數(shù)據(jù)進(jìn)行壓縮編碼。
在步驟105~106中,判斷當(dāng)前的待存儲(chǔ)數(shù)據(jù)中是否存在整數(shù)數(shù)據(jù),如果是,則對(duì)整數(shù)數(shù)據(jù)進(jìn)行整數(shù)壓縮方式的壓縮編碼,將壓縮編碼后的數(shù)據(jù)以及未經(jīng)壓縮編碼的數(shù)據(jù)作為待存儲(chǔ)數(shù)據(jù),并執(zhí)行步驟107;否則,直接執(zhí)行步驟107。
在傳統(tǒng)方法中,采用固定的數(shù)據(jù)長(zhǎng)度表示整數(shù),例如每個(gè)整數(shù)占用4字節(jié)。但是在實(shí)際情況中,由于整數(shù)的數(shù)值較小,占用的空間較小,如果仍然采用固定的數(shù)據(jù)長(zhǎng)度,則會(huì)造成空間的浪費(fèi)。本實(shí)施例中根據(jù)整數(shù)的實(shí)際大小,確定表示該整數(shù)所需的數(shù)據(jù)長(zhǎng)度。例如對(duì)于整數(shù)1,僅需1字節(jié);而對(duì)于整數(shù)1000,需要2字節(jié)。
在步驟107中,將待存儲(chǔ)數(shù)據(jù)存入cache中。
至此,完成本實(shí)施例中的數(shù)據(jù)壓縮流程。
上述的數(shù)據(jù)壓縮方法適用于諸如索引數(shù)據(jù)存儲(chǔ)等多種場(chǎng)合。在本實(shí)施例中的數(shù)據(jù)存儲(chǔ)方法中,將待存儲(chǔ)數(shù)據(jù)經(jīng)過字節(jié)復(fù)用、差分編碼以及整數(shù)壓縮等方式的壓縮編碼后,放入cache中。這樣能夠減少數(shù)據(jù)占用的空間,增加固定空間的cache的數(shù)據(jù)存儲(chǔ)量。
相應(yīng)地,為了能夠從cache中獲得原始數(shù)據(jù),本實(shí)施例還提供了一種數(shù)據(jù)讀取方法。在實(shí)際的應(yīng)用中,由于壓縮編碼信息中包含有執(zhí)行各種方式的壓縮編碼的數(shù)據(jù)類型。因此,在數(shù)據(jù)讀取過程中,能夠根據(jù)壓縮編碼信息來確定被壓縮編碼的數(shù)據(jù),而后通過對(duì)經(jīng)過壓縮編碼的數(shù)據(jù)進(jìn)行解碼來獲得原始數(shù)據(jù)。
圖2示出了本實(shí)施例中數(shù)據(jù)讀取方法的示例性流程圖。在該方法執(zhí)行之前,預(yù)先讀取壓縮編碼信息,以便在后續(xù)數(shù)據(jù)讀取過程中順利解碼。如圖2所示,本實(shí)施例中的數(shù)據(jù)讀取方法包括在步驟201~202中,將待讀取數(shù)據(jù)從cache中讀出,根據(jù)壓縮編碼信息判斷被讀取的數(shù)據(jù)中是否存在整數(shù)數(shù)據(jù),如果是,則對(duì)整數(shù)數(shù)據(jù)進(jìn)行整數(shù)壓縮方式對(duì)應(yīng)的解碼,將解碼后的數(shù)據(jù)替換解碼前的數(shù)據(jù),放入被讀出的數(shù)據(jù)中,作為當(dāng)前數(shù)據(jù),并執(zhí)行步驟203;否則,直接執(zhí)行步驟203。
這里,將經(jīng)過整數(shù)壓縮的數(shù)據(jù)選擇出來之后,再進(jìn)行解碼。對(duì)整數(shù)數(shù)據(jù)進(jìn)行整數(shù)壓縮方式對(duì)應(yīng)的解碼時(shí),將從cache中讀出的整數(shù)數(shù)據(jù)還原為執(zhí)行整數(shù)壓縮方式的壓縮編碼之前的數(shù)值。
在步驟203~204中,根據(jù)壓縮編碼信息判斷當(dāng)前數(shù)據(jù)中是否存在經(jīng)過差分編碼的數(shù)據(jù),如果是,則對(duì)經(jīng)過差分編碼的數(shù)據(jù)進(jìn)行差分編碼方式對(duì)應(yīng)的解碼,將解碼后的數(shù)據(jù)替換解碼前的數(shù)據(jù),放入被讀出的數(shù)據(jù)中,作為當(dāng)前數(shù)據(jù),并執(zhí)行步驟205;否則,直接執(zhí)行步驟205。
這里在確定存在經(jīng)過差分編碼的數(shù)據(jù)后,將所確定的數(shù)據(jù)選擇出來,再進(jìn)行解碼。并且,進(jìn)行差分編碼方式對(duì)應(yīng)的解碼是指,將經(jīng)過差分編碼的整數(shù)序列中的第一個(gè)元素保持不變,從第二個(gè)元素開始,將每個(gè)元素的當(dāng)前數(shù)值與前一元素的原始數(shù)值之和作為該元素經(jīng)過差分編碼方式對(duì)應(yīng)的解碼后的結(jié)果。例如經(jīng)過差分編碼的整數(shù)序列包括的元素為3,7,6;則首先保持第一個(gè)元素3不變,將第二個(gè)元素的當(dāng)前數(shù)值加上第一個(gè)元素的數(shù)值得到第二個(gè)元素的原始數(shù)值為10,再將第三個(gè)元素的當(dāng)前數(shù)值加上第二個(gè)元素的原始數(shù)值得到第三個(gè)元素的原始數(shù)值為16。
在步驟205~206中,根據(jù)壓縮編碼信息判斷當(dāng)前數(shù)據(jù)中是否存在經(jīng)過字節(jié)復(fù)用的數(shù)據(jù),如果是,則對(duì)經(jīng)過字節(jié)復(fù)用的數(shù)據(jù)進(jìn)行字節(jié)復(fù)用方式對(duì)應(yīng)的解碼,并執(zhí)行步驟207;否則,直接執(zhí)行步驟207。
這里,在確定存在經(jīng)過字節(jié)復(fù)用的數(shù)據(jù)之后,將這些數(shù)據(jù)選擇出來,并將壓縮于1字節(jié)中的多項(xiàng)數(shù)據(jù)分別用1字節(jié)表示。
在步驟207中,獲取原始數(shù)據(jù)。
如果步驟201中從cache中讀出的數(shù)據(jù)中不包括任何經(jīng)過壓縮編碼的數(shù)據(jù),則本步驟中的原始數(shù)據(jù)為所讀出的數(shù)據(jù);如果讀出的數(shù)據(jù)中的一部分為經(jīng)過壓縮編碼的數(shù)據(jù),則本步驟中的原始數(shù)據(jù)為解碼后的數(shù)據(jù)與未經(jīng)解碼的數(shù)據(jù)的組合;如果讀出的數(shù)據(jù)全部是經(jīng)過壓縮編碼的數(shù)據(jù),則本步驟中的原始數(shù)據(jù)為解碼后的數(shù)據(jù)。
至此,完成本實(shí)施例中的數(shù)據(jù)讀取流程。
上述圖1和圖2所示的數(shù)據(jù)存儲(chǔ)方法和數(shù)據(jù)讀取方法可以應(yīng)用于數(shù)據(jù)檢索中。
圖3示出了本發(fā)明中數(shù)據(jù)檢索方法的示例性流程圖。參見圖3,該方法包括在步驟301中,在接收到來自于用戶的檢索請(qǐng)求時(shí),判斷該檢索請(qǐng)求對(duì)應(yīng)的數(shù)據(jù)是否在cache中,如果是,則執(zhí)行步驟302;否則,執(zhí)行步驟303;在步驟302中,從cache中取出該數(shù)據(jù),根據(jù)壓縮編碼信息進(jìn)行整數(shù)壓縮、差分編碼以及字節(jié)復(fù)用方式對(duì)應(yīng)的解碼,將解碼結(jié)果作為檢索結(jié)果,并結(jié)束本數(shù)據(jù)檢索流程;在步驟303中,從索引文件中讀取檢索請(qǐng)求對(duì)應(yīng)的索引數(shù)據(jù),作為檢索結(jié)果,在符合存放策略時(shí),將索引數(shù)據(jù)進(jìn)行字節(jié)復(fù)用、差分編碼以及整數(shù)壓縮方式的壓縮編碼后放入cache中。
本發(fā)明中數(shù)據(jù)檢索方法適于多種索引方式,例如正排索引、倒排索引等。
下面以倒排索引為例,對(duì)本發(fā)明中的數(shù)據(jù)檢索方法進(jìn)行說明。
圖4示出了本實(shí)施例中數(shù)據(jù)檢索方法的流程圖。索引數(shù)據(jù)存放的位置可以為cache或者磁盤中的索引文件。其中cache中保存的是符合搜索引擎中預(yù)先設(shè)置的存放策略的索引數(shù)據(jù),例如最近被訪問的索引數(shù)據(jù),訪問率較高的索引數(shù)據(jù)等。另外,本實(shí)施例中還預(yù)先讀取cache中的檢索數(shù)據(jù)對(duì)應(yīng)的壓縮編碼信息,以便在從cache中讀出數(shù)據(jù)后進(jìn)行解碼。如圖4所示,本實(shí)施例中的數(shù)據(jù)檢索方法包括在步驟401~402中,搜索引擎接收到來自于用戶的檢索請(qǐng)求,判斷該檢索請(qǐng)求對(duì)應(yīng)的檢索數(shù)據(jù)是否存儲(chǔ)在cache中,如果是,則執(zhí)行步驟403;否則,執(zhí)行步驟404。
在步驟403中,從cache中讀取檢索請(qǐng)求對(duì)應(yīng)的索引數(shù)據(jù),并根據(jù)壓縮編碼信息對(duì)所讀出的索引數(shù)據(jù)進(jìn)行解碼,并將解碼結(jié)果作為檢索結(jié)果,而后執(zhí)行步驟410。
本步驟中對(duì)來自于cache的索引數(shù)據(jù)進(jìn)行解碼的具體操作與圖2所示的步驟201~207中的操作相同。
在步驟404~405中,從索引文件中讀取檢索請(qǐng)求對(duì)應(yīng)的索引數(shù)據(jù),將讀取到的索引數(shù)據(jù)作為檢索結(jié)果,并根據(jù)預(yù)先設(shè)置的存放策略判斷該索引數(shù)據(jù)是否應(yīng)被存儲(chǔ)到cache中,如果是,則執(zhí)行步驟406;否則,直接執(zhí)行步驟410。
在步驟406~407中,判斷cache中是否存在剩余空間,如果是,則將當(dāng)前的索引數(shù)據(jù)經(jīng)過字節(jié)復(fù)用、差分編碼以及整數(shù)壓縮方式的壓縮編碼后,存入cache中,并執(zhí)行步驟410;否則,執(zhí)行步驟408。
這里對(duì)數(shù)據(jù)進(jìn)行壓縮編碼的方法與圖1所示的數(shù)據(jù)存儲(chǔ)流程中步驟101至107的操作相同。
對(duì)于倒排索引而言,其倒排索引的基本思想是記錄單詞在哪些文檔中出現(xiàn)。索引數(shù)據(jù)的結(jié)構(gòu)為<T,F(xiàn)t,<D,F(xiàn)d,t,<P>*>*>*>。其中,T表示單詞標(biāo)識(shí),F(xiàn)t表示單詞的文檔頻率,D表示文檔標(biāo)識(shí),F(xiàn)d,t表示單詞在文檔中的詞頻,P表示單詞在文檔中的位置,*表示對(duì)應(yīng)的項(xiàng)目可有多個(gè)取值。另外還可以記錄諸如字體大小、文字大小寫、是否加重、出現(xiàn)于標(biāo)題或正文等類型的單詞附加信息作為索引數(shù)據(jù)。上述索引數(shù)據(jù)中各個(gè)類型的數(shù)據(jù)均為整數(shù)數(shù)據(jù),能夠進(jìn)行整數(shù)壓縮;P所代表的單詞在文檔中的位置這一類型的數(shù)據(jù)為有序數(shù)列,因此能夠進(jìn)行差分編碼;而附加信息可以被執(zhí)行字節(jié)復(fù)用。經(jīng)過本步驟中的壓縮編碼后,索引數(shù)據(jù)所需空間能夠明顯減少。
在步驟408中,根據(jù)預(yù)先設(shè)置的替換條件,判斷是否利用當(dāng)前索引數(shù)據(jù)替換cache中的原索引數(shù)據(jù),如果是,則確定并刪除被替換的原索引數(shù)據(jù),再將當(dāng)前的索引數(shù)據(jù)經(jīng)過字節(jié)復(fù)用、差分編碼以及整數(shù)壓縮方式的壓縮編碼后,存入cache中,執(zhí)行步驟410;否則,直接執(zhí)行步驟410。
為了保證cache中保存的是最便于檢索的索引數(shù)據(jù),本實(shí)施例還預(yù)先設(shè)置替換條件,用于在cache不存在剩余空間的情況下,衡量新的索引數(shù)據(jù)是否替代cache中的部分索引數(shù)據(jù),以便保證cache中的內(nèi)容能夠根據(jù)用戶的檢索要求更新。這里的替換條件可以是訪問次數(shù)較多、訪問時(shí)間較近等。
在步驟410中,向用戶返回檢索結(jié)果。
至此,完成本實(shí)施例中的數(shù)據(jù)檢索流程。
有上述的檢索流程可見,由于索引數(shù)據(jù)經(jīng)過壓縮編碼之后放入cache中,減小了每條索引數(shù)據(jù)占用的空間,增加了具有固定空間的cache的數(shù)據(jù)存儲(chǔ)量;在數(shù)據(jù)檢索時(shí),較多的索引數(shù)據(jù)都能夠在cache中找到,有效地提高了數(shù)據(jù)檢索的命中率。并且,由于檢索過程中訪問cache的次數(shù)較多,因而大大降低了從索引文件中讀取索引數(shù)據(jù)的幾率,減少了因執(zhí)行文件IO而耗費(fèi)的時(shí)間,從而有效地提高了海量數(shù)據(jù)情況下數(shù)據(jù)檢索的效率。另外,本實(shí)施例中在從索引文件中讀取到索引數(shù)據(jù)時(shí),如果該索引數(shù)據(jù)符合搜索引擎中存放策略、替換條件的要求,則將該索引數(shù)據(jù)存入cache中,從而能夠根據(jù)用戶的檢索需求及時(shí)更新cache,保證數(shù)據(jù)檢索的高效率。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)存儲(chǔ)方法,其特征在于,預(yù)先設(shè)置壓縮編碼信息,表示壓縮編碼方式對(duì)應(yīng)的數(shù)據(jù)類型,該方法包括當(dāng)緩沖區(qū)中存在剩余空間時(shí),根據(jù)所述壓縮編碼信息,將待存儲(chǔ)數(shù)據(jù)進(jìn)行字節(jié)復(fù)用、差分編碼和整數(shù)壓縮方式的壓縮編碼,并將壓縮編碼結(jié)果保存在所述緩沖區(qū)中。
2.如權(quán)利要求1所述的方法,其特征在于,將待存儲(chǔ)數(shù)據(jù)進(jìn)行字節(jié)復(fù)用方式的壓縮編碼為從所述待存儲(chǔ)數(shù)據(jù)中選擇出單項(xiàng)數(shù)據(jù)長(zhǎng)度小于1字節(jié)并且能夠合并到1字節(jié)中的多項(xiàng)數(shù)據(jù),將所選擇出的多項(xiàng)數(shù)據(jù)用1字節(jié)表示,并將字節(jié)復(fù)用方式的壓縮編碼結(jié)果代替所選擇出的多項(xiàng)數(shù)據(jù),放入待存儲(chǔ)數(shù)據(jù)中。
3.如權(quán)利要求1或2所述的方法,其特征在于,所述進(jìn)行字節(jié)復(fù)用方式的壓縮編碼之前,進(jìn)一步包括根據(jù)壓縮編碼信息,判斷待存儲(chǔ)數(shù)據(jù)中是否存在字節(jié)復(fù)用方式對(duì)應(yīng)的數(shù)據(jù)類型,如果是,則執(zhí)行所述字節(jié)復(fù)用方式的壓縮編碼;否則,執(zhí)行所述差分編碼方式的壓縮編碼。
4.如權(quán)利要求1所述的方法,其特征在于,所述將待存儲(chǔ)數(shù)據(jù)進(jìn)行差分編碼方式的壓縮編碼為從所述待存儲(chǔ)數(shù)據(jù)中選擇出有序的整數(shù)序列,將有序的整數(shù)序列轉(zhuǎn)換為差分序列,并將差分編碼方式的壓縮編碼結(jié)果代替被選擇出的有序的整數(shù)序列,放入待存儲(chǔ)數(shù)據(jù)中。
5.如權(quán)利要求1或4所述的方法,其特征在于,所述字節(jié)復(fù)用方式的壓縮編碼與差分編碼方式的壓縮編碼之間,進(jìn)一步包括根據(jù)所述壓縮編碼信息,判斷待存儲(chǔ)數(shù)據(jù)中是否存在差分編碼方式對(duì)應(yīng)的有序的整數(shù)序列,如果是,則執(zhí)行所述差分編碼方式對(duì)應(yīng)的壓縮編碼;否則,執(zhí)行所述整數(shù)壓縮方式的壓縮編碼。
6.如權(quán)利要求1所述的方法,其特征在于,所述將待存儲(chǔ)數(shù)據(jù)進(jìn)行整數(shù)壓縮方式的壓縮編碼為從所述待存儲(chǔ)數(shù)據(jù)中選擇出整數(shù)數(shù)據(jù),根據(jù)所選擇的整數(shù)數(shù)據(jù)的實(shí)際大小,確定該整數(shù)數(shù)據(jù)所需的數(shù)據(jù)長(zhǎng)度,按照所確定的數(shù)據(jù)長(zhǎng)度表示該整數(shù)數(shù)據(jù),并將整數(shù)壓縮方式的壓縮編碼結(jié)果代替被選擇出的整數(shù)數(shù)據(jù),放入待存儲(chǔ)數(shù)據(jù)中。
7.如權(quán)利要求1或6所述的方法,其特征在于,所述差分編碼方式的壓縮編碼與整數(shù)壓縮方式的壓縮編碼之間,進(jìn)一步包括根據(jù)所述壓縮編碼信息,判斷待存儲(chǔ)數(shù)據(jù)中是否存在整數(shù)壓縮方式對(duì)應(yīng)的整數(shù)數(shù)據(jù),如果是,則執(zhí)行所述整數(shù)壓縮方式對(duì)應(yīng)的壓縮編碼;否則,執(zhí)行所述將壓縮編碼結(jié)果保存在所述緩沖區(qū)中的操作。
8.一種數(shù)據(jù)讀取方法,其特征在于,預(yù)先獲取表示壓縮編碼方式對(duì)應(yīng)的數(shù)據(jù)類型的壓縮編碼信息,該方法包括將待讀取數(shù)據(jù)從緩沖區(qū)中讀出,根據(jù)壓縮編碼信息,對(duì)被讀出的數(shù)據(jù)進(jìn)行整數(shù)壓縮方式、差分編碼方式以及字節(jié)復(fù)用方式對(duì)應(yīng)的解碼,得到讀取結(jié)果。
9.如權(quán)利要求8所述的方法,其特征在于,所述對(duì)被讀出的數(shù)據(jù)進(jìn)行整數(shù)壓縮方式對(duì)應(yīng)的解碼為根據(jù)所述壓縮編碼信息,從被讀出的數(shù)據(jù)中選擇出經(jīng)過整數(shù)壓縮方式的壓縮編碼的數(shù)據(jù),還原為執(zhí)行整數(shù)壓縮之前的數(shù)值,并將得到的解碼結(jié)果代替所選擇的數(shù)據(jù),放入被讀出的數(shù)據(jù)中。
10.如權(quán)利要求8或9所述的方法,其特征在于,所述整數(shù)壓縮方式對(duì)應(yīng)的解碼之前,進(jìn)一步包括根據(jù)壓縮編碼信息,判斷被讀出的數(shù)據(jù)中是否存在經(jīng)過整數(shù)壓縮方式的壓縮編碼的數(shù)據(jù),如果是,則執(zhí)行所述整數(shù)壓縮方式對(duì)應(yīng)的解碼;否則,執(zhí)行差分方式對(duì)應(yīng)的解碼。
11.如權(quán)利要求8所述的方法,其特征在于,所述對(duì)被讀出的數(shù)據(jù)進(jìn)行差分編碼方式對(duì)應(yīng)的解碼為根據(jù)所述壓縮編碼信息,從被讀出的數(shù)據(jù)中選擇出經(jīng)過差分編碼方式的壓縮編碼的數(shù)據(jù),轉(zhuǎn)換為有序的整數(shù)序列,并得到的解碼結(jié)果代替所選擇的數(shù)據(jù),放入被讀出的數(shù)據(jù)中。
12.如權(quán)利要求8或11所述的方法,其特征在于,所述整數(shù)壓縮方式對(duì)應(yīng)的解碼與差分編碼對(duì)應(yīng)的解碼之間,進(jìn)一步包括根據(jù)壓縮編碼信息,判斷被讀出的數(shù)據(jù)中是否存在經(jīng)過差分編碼方式的壓縮編碼的數(shù)據(jù),如果是,則執(zhí)行所述差分編碼方式對(duì)應(yīng)的解碼;否則,執(zhí)行字節(jié)復(fù)用方式對(duì)應(yīng)的解碼。
13.如權(quán)利要求8所述的方法,其特征在于,所述對(duì)被讀出的數(shù)據(jù)進(jìn)行字節(jié)復(fù)用方式對(duì)應(yīng)的解碼為根據(jù)所述壓縮編碼信息,從被讀出的數(shù)據(jù)中選擇出經(jīng)過字節(jié)復(fù)用方式的壓縮編碼的數(shù)據(jù),將壓縮于1字節(jié)中的多項(xiàng)數(shù)據(jù)分別用1字節(jié)表示,并將得到的解碼結(jié)果代替所選擇的數(shù)據(jù),放入被讀出的數(shù)據(jù)中。
14.如權(quán)利要求8或13所述的方法,其特征在于,所述差分編碼方式對(duì)應(yīng)的解碼與字節(jié)復(fù)用方式對(duì)應(yīng)的解碼之間,進(jìn)一步包括根據(jù)壓縮編碼信息,判斷被讀出的數(shù)據(jù)中是否存在經(jīng)過字節(jié)復(fù)用方式對(duì)應(yīng)的數(shù)據(jù),如果是,則執(zhí)行所述字節(jié)復(fù)用方式對(duì)應(yīng)的解碼;否則,執(zhí)行所述得到讀取結(jié)果的操作。
15.一種數(shù)據(jù)檢索方法,其特征在于,預(yù)先設(shè)置壓縮編碼信息,表示壓縮編碼方式對(duì)應(yīng)的數(shù)據(jù)類型,該方法包括A.在接收到來自于用戶的檢索請(qǐng)求時(shí),判斷該檢索請(qǐng)求對(duì)應(yīng)的索引數(shù)據(jù)是否在緩沖區(qū)中,如果是,則執(zhí)行步驟B;否則,執(zhí)行步驟C;B.從緩沖區(qū)中讀取出該索引數(shù)據(jù),根據(jù)壓縮編碼信息進(jìn)行整數(shù)壓縮、差分編碼以及字節(jié)復(fù)用方式對(duì)應(yīng)的解碼,將解碼結(jié)果作為檢索結(jié)果,返回給用戶,并結(jié)束本數(shù)據(jù)檢索流程;C.從索引文件中讀取檢索請(qǐng)求對(duì)應(yīng)的索引數(shù)據(jù),作為檢索結(jié)果,在符合存放策略時(shí),根據(jù)壓縮編碼信息,將索引數(shù)據(jù)進(jìn)行字節(jié)復(fù)用、差分編碼以及整數(shù)壓縮方式的壓縮編碼后放入所述緩沖區(qū)中,再將檢索結(jié)果返回給用戶。
16.如權(quán)利要求15所述的方法,其特征在于,所述將索引數(shù)據(jù)進(jìn)行字節(jié)復(fù)用方式的壓縮編碼為從索引數(shù)據(jù)中選擇出單項(xiàng)數(shù)據(jù)長(zhǎng)度小于1字節(jié)并且能夠合并到1字節(jié)中的多項(xiàng)數(shù)據(jù),將所選擇出的多項(xiàng)數(shù)據(jù)用1字節(jié)表示,并將字節(jié)復(fù)用方式的壓縮編碼結(jié)果代替所選擇出的多項(xiàng)數(shù)據(jù),放入所述索引數(shù)據(jù)中;所述進(jìn)行字節(jié)復(fù)用方式對(duì)應(yīng)的解碼為根據(jù)所述壓縮編碼信息,從被讀出的索引數(shù)據(jù)中選擇出經(jīng)過字節(jié)復(fù)用方式的壓縮編碼的數(shù)據(jù),將壓縮于1字節(jié)中的多項(xiàng)數(shù)據(jù)分別用1字節(jié)表示,并將得到的解碼結(jié)果代替所選擇的數(shù)據(jù),放入被讀出的索引數(shù)據(jù)中。
17.如權(quán)利要求15所述的方法,其特征在于,所述將索引數(shù)據(jù)進(jìn)行差分編碼方式的壓縮編碼為從索引數(shù)據(jù)中選擇出有序的整數(shù)序列,將有序的整數(shù)序列轉(zhuǎn)換為差分序列,并將差分編碼方式的壓縮編碼結(jié)果代替被選擇出的有序的整數(shù)序列,放入待存儲(chǔ)數(shù)據(jù)中;所述進(jìn)行差分編碼方式對(duì)應(yīng)的解碼為根據(jù)所述壓縮編碼信息,從被讀出的索引數(shù)據(jù)中選擇出經(jīng)過差分編碼方式的壓縮編碼的數(shù)據(jù),轉(zhuǎn)換為有序的整數(shù)序列,并得到的解碼結(jié)果代替所選擇的數(shù)據(jù),放入被讀出的索引數(shù)據(jù)中。
18.如權(quán)利要求15所述的方法,其特征在于,所述將索引數(shù)據(jù)進(jìn)行整數(shù)壓縮方式的壓縮編碼為從索引數(shù)據(jù)中選擇出整數(shù)數(shù)據(jù),根據(jù)所選擇的整數(shù)數(shù)據(jù)的實(shí)際大小,確定該整數(shù)數(shù)據(jù)所需的數(shù)據(jù)長(zhǎng)度,按照所確定的數(shù)據(jù)長(zhǎng)度表示該整數(shù)數(shù)據(jù),并將整數(shù)壓縮方式的壓縮編碼結(jié)果代替被選擇出的整數(shù)數(shù)據(jù),放入索引數(shù)據(jù)中;所述進(jìn)行整數(shù)壓縮方式對(duì)應(yīng)的解碼為根據(jù)所述壓縮編碼信息,從被讀出的索引數(shù)據(jù)中選擇出經(jīng)過整數(shù)壓縮方式的壓縮編碼的數(shù)據(jù),還原為執(zhí)行整數(shù)壓縮之前的數(shù)值,并將得到的解碼結(jié)果代替所選擇的數(shù)據(jù),放入被讀出的索引數(shù)據(jù)中。
19.如權(quán)利要求15至18中任意一項(xiàng)所述的方法,其特征在于,預(yù)先設(shè)置表示允許緩沖區(qū)中的索引數(shù)據(jù)被替換的替換條件,步驟C所述進(jìn)行壓縮編碼之前,進(jìn)一步包括C01.判斷所述緩沖區(qū)中是否存在剩余空間,如果是,則繼續(xù)執(zhí)行所述壓縮編碼;否則,執(zhí)行步驟C02;C02.根據(jù)預(yù)先設(shè)置的替換條件,判斷是否利用所述從文件中讀取的索引數(shù)據(jù)替換緩沖區(qū)中的原索引數(shù)據(jù),如果是,則確定并刪除被替換的原索引數(shù)據(jù),再僅需執(zhí)行所述壓縮編碼;否則,執(zhí)行所述將檢索結(jié)果返回給用戶的操作。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)存儲(chǔ)方法,預(yù)先設(shè)置壓縮編碼信息,表示壓縮編碼方式對(duì)應(yīng)的數(shù)據(jù)類型,該方法包括當(dāng)緩沖區(qū)中存在剩余空間時(shí),根據(jù)所述壓縮編碼信息,將待存儲(chǔ)數(shù)據(jù)進(jìn)行字節(jié)復(fù)用、差分編碼和整數(shù)壓縮方式的壓縮編碼,保存在所述緩沖區(qū)中。相應(yīng)地,本發(fā)明公開了一種數(shù)據(jù)讀取方法,預(yù)先獲取表示壓縮編碼方式對(duì)應(yīng)的數(shù)據(jù)類型的壓縮編碼信息,該方法包括將待讀取數(shù)據(jù)從緩沖區(qū)中讀出,根據(jù)壓縮編碼信息,對(duì)被讀出的數(shù)據(jù)進(jìn)行整數(shù)壓縮方式、差分編碼方式以及字節(jié)復(fù)用方式對(duì)應(yīng)的解碼,得到讀取結(jié)果。本發(fā)明還公開了一種利用上述數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)讀取方法的數(shù)據(jù)檢索方法。本發(fā)明中的方法能夠增加固定空間的緩沖區(qū)存儲(chǔ)的數(shù)據(jù)量,縮短數(shù)據(jù)檢索時(shí)間。
文檔編號(hào)G06F17/30GK101075237SQ20061009056
公開日2007年11月21日 申請(qǐng)日期2006年6月28日 優(yōu)先權(quán)日2006年6月28日
發(fā)明者謝海勸, 邵榮防, 王志平 申請(qǐng)人:騰訊科技(深圳)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1