本發(fā)明涉及數(shù)據(jù)搜索技術(shù)領(lǐng)域,尤其涉及一種海量數(shù)據(jù)多維排序搜索方法。
背景技術(shù):
無(wú)線體域網(wǎng)的信息隱私包括用戶的各項(xiàng)生理參數(shù),大量的隱私數(shù)據(jù)被存儲(chǔ)在云服務(wù)器中,密文檢索技術(shù)是解決云環(huán)境隱私安全問(wèn)題的有效方法。當(dāng)前的數(shù)據(jù)保護(hù)技術(shù)中,加密算法能夠較好地保護(hù)數(shù)據(jù),但加解密計(jì)算會(huì)對(duì)系統(tǒng)效率產(chǎn)生極大的影響;數(shù)據(jù)拆分重裝策略的效率較高,但其對(duì)云平臺(tái)的結(jié)構(gòu)和物理層次依賴性過(guò)大。因此,找到數(shù)據(jù)的實(shí)用性與安全性的平衡點(diǎn)是云存儲(chǔ)平臺(tái)應(yīng)用中最為關(guān)鍵的問(wèn)題。
clearm提出基于多身份、多密鑰的層次全同態(tài)加密方案,滿足多用戶共享,不同身份密文計(jì)算。qianh提出了適用于多機(jī)構(gòu)系統(tǒng)的訪問(wèn)控制方案。clearm提出基于身份的純?nèi)瑧B(tài)加密方案,滿足多用戶共享和不同身份、不同屬性密文計(jì)算。songdx提出了一種加密方式和密文順序檢索架構(gòu),該方法證明,在只知道密文的情況下,云存儲(chǔ)服務(wù)提供商不能截取任何明文的信息。但是,該方案的加密和查詢算法的時(shí)間復(fù)雜度為o(n),其中n表示文檔長(zhǎng)度。gohej形式化的定義了安全索引結(jié)構(gòu)-z索引,該索引模型通過(guò)偽隨機(jī)函數(shù)和布隆過(guò)濾器(bloomfilter)實(shí)現(xiàn),可以抵抗適應(yīng)性選擇關(guān)鍵字攻擊,然而,z索引并不提供查詢排序機(jī)制,若查詢?cè)~出現(xiàn)在大量文檔中,用戶需要從大量的結(jié)果集中篩選所需文檔。通過(guò)在倒排表中加入相關(guān)度分?jǐn)?shù),wangc實(shí)現(xiàn)了支持結(jié)果集排序的密文檢索方法。在查詢階段,云服務(wù)器僅需返回與查詢條件匹配的前k個(gè)相關(guān)文檔,而不是所有滿足條件的文檔,這不但減少了帶寬的消耗,還改善了用戶體驗(yàn)。然而,上述工作僅能解決單關(guān)鍵詞密文檢索的問(wèn)題,即用戶在一次查詢中僅能提交一個(gè)查詢檢索詞。
為了更全面的表達(dá)用戶的查詢意圖,多關(guān)鍵字檢索技術(shù)應(yīng)運(yùn)而生。sunw提出一種新的密文檢索框架mrse以解決多關(guān)鍵字密文檢索問(wèn)題。在索引建立階段,每個(gè)文檔被表示成一個(gè)二進(jìn)制向量,其中每一位的值代表當(dāng)前文檔是否包含該關(guān)鍵字。查詢向量以同樣的方式被表示成一個(gè)二進(jìn)制向量。云服務(wù)器通過(guò)執(zhí)行矩陣運(yùn)算和安全k近鄰算法獲取排序的結(jié)果集并返回給用戶。然而,mrse框架的查詢響應(yīng)時(shí)間隨著文檔集的增長(zhǎng)而增長(zhǎng),難以適應(yīng)大數(shù)據(jù)時(shí)代數(shù)據(jù)迅速增長(zhǎng)的需求。
為了加快查詢的速度,樹形結(jié)構(gòu)普遍應(yīng)用于索引的構(gòu)建,比如在數(shù)據(jù)庫(kù)領(lǐng)域,leslieh使用b樹來(lái)加快查詢速度,ciacciap通過(guò)構(gòu)造m樹加快了對(duì)度量空間的索引過(guò)程。田雪等人將密文檢索框架mrse進(jìn)行優(yōu)化,提出一種新型的密文索引結(jié)構(gòu):mrse-ss,將相似查詢樹結(jié)構(gòu)引入密文索引框架用于提升多關(guān)鍵字排序檢索的效率,并且提出一種動(dòng)態(tài)聚類算法dk-medoids,聚類過(guò)程隨文檔量增加而動(dòng)態(tài)變化,適用于云計(jì)算環(huán)境下的密文檢索場(chǎng)景,但是在該方法中在構(gòu)建超球體時(shí)最壞的時(shí)間復(fù)雜度會(huì)達(dá)到o(n2),并且若在查詢算法傳遞回文檔時(shí),若最相關(guān)的超球體中文檔數(shù)少于所查詢的k個(gè),則該方法不能解決這個(gè)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)上述問(wèn)題,本發(fā)明的目的在于提供一種快速的海量數(shù)據(jù)多維排序搜索方法。
為了解決背景技術(shù)中所存在的問(wèn)題,本發(fā)明的技術(shù)方案為:
一種海量數(shù)據(jù)多維排序搜索方法,包括以下步驟:
1)根據(jù)數(shù)據(jù)庫(kù)中文檔的領(lǐng)域相關(guān)度,將文檔進(jìn)行聚類,得到聚類組織相似查詢樹;
2)將不同的領(lǐng)域的聚類組織進(jìn)行聚類,形成相似查詢樹;
3)獲取用戶提交的查詢向量,將查詢向量表示為查詢超球體;
4)根據(jù)查詢超球體與相似查詢樹中節(jié)點(diǎn)所代表的超球體的位置關(guān)系,獲取與查詢超球體交集最多的超球體,并對(duì)該超球體向下一層節(jié)點(diǎn)尋找,直到葉子節(jié)點(diǎn),并查詢其左右鄰居節(jié)點(diǎn),按照相關(guān)比例返回節(jié)點(diǎn)中k個(gè)最相關(guān)的文檔列表以及文檔向量。
所述步驟1)具體為:
1.1、根據(jù)數(shù)據(jù)庫(kù)中文檔的領(lǐng)域相關(guān)度,對(duì)相同領(lǐng)域的文檔生成一個(gè)多維的文檔向量dc;
1.2、設(shè)置單個(gè)槽中元素的門限值t;
1.3、初始化文檔向量dc中選擇向量值最大和最小的對(duì)象,分別做所有槽的上下界;
1.4、確定初始k值,將文檔向量dc化為等大小區(qū)間槽,利用公式(1)將所有文檔集放入對(duì)應(yīng)槽中,選取其中與槽中心點(diǎn)最近的對(duì)象作為該聚類中心,所述公式(1):
其中,p為文檔集中的點(diǎn),omax為文檔集中向量最大的對(duì)象,omin為文檔集中向量最小的對(duì)象;
1.5、檢測(cè)所有槽中成員元素是否超過(guò)門限值t,若存在超過(guò)門限值t,則對(duì)該槽繼續(xù)進(jìn)行聚類,生成子槽。
所述步驟1.3與1.4之間還包括步驟:
對(duì)于新加入文檔向量dc的文檔對(duì)象,檢測(cè)與各個(gè)槽之間的距離,決定加入槽,并與當(dāng)前中心點(diǎn)比較,若其與槽中心點(diǎn)向量差小于當(dāng)前中心點(diǎn),則將該對(duì)象替換為中心點(diǎn),若超出原聚類的上下界則以該對(duì)象作為中心點(diǎn),按比例建立新槽。
所述步驟2)包括將聚類組織相似查詢樹中葉子節(jié)點(diǎn)加入指向其左右兄弟節(jié)點(diǎn)指針。
所述步驟4)具體包括:
4.1、服務(wù)器首先計(jì)算查詢超球體和根節(jié)點(diǎn)各個(gè)超球體之間的關(guān)系,得到交集最多的某個(gè)超球體;
4.2、根據(jù)得到的超球體,繼續(xù)向下一層節(jié)點(diǎn)尋找交集最多的超球體;
4.3、重復(fù)步驟4.2,直到葉子節(jié)點(diǎn),計(jì)算葉子節(jié)點(diǎn)和查詢超球體球心oqw之間的距離,獲得與查詢超球體交集最大的葉子節(jié)點(diǎn);
4.4、查找所述相交的葉子節(jié)點(diǎn)的左右鄰居節(jié)點(diǎn),按比例范圍最近的k個(gè)文檔及列表。
與現(xiàn)有技術(shù)相比較,本發(fā)明的有益效果為:
本發(fā)明提供了一種海量數(shù)據(jù)多維排序搜索方法,以mrse-ss基礎(chǔ)算法結(jié)構(gòu)進(jìn)行算法實(shí)現(xiàn)提出了動(dòng)態(tài)的dik-medoids算法,在實(shí)際部署中通過(guò)對(duì)文檔數(shù)量、關(guān)鍵詞個(gè)數(shù)、槽個(gè)數(shù)三個(gè)影響初始化執(zhí)行時(shí)間的變量取不同的值,使dik-medoids算法在初始化效率較傳統(tǒng)的dk-medoids算法在初始構(gòu)建的時(shí)間消耗上有了較大的提升,在大數(shù)據(jù)的環(huán)境下dik-medoids算法具有明顯的優(yōu)勢(shì),提高了數(shù)據(jù)的查詢速度已經(jīng)準(zhǔn)確度。
附圖說(shuō)明
圖1是本發(fā)明海量數(shù)據(jù)多維排序搜索方法流程圖;
圖2是本發(fā)明相似查詢樹的結(jié)構(gòu)圖;
圖3是本發(fā)明實(shí)驗(yàn)數(shù)據(jù)圖,圖中(a)為文檔個(gè)數(shù)變化實(shí)驗(yàn)圖,(b)為關(guān)鍵詞個(gè)數(shù)變化實(shí)驗(yàn)圖,(c)為簇個(gè)數(shù)變化實(shí)驗(yàn)圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明做詳細(xì)描述。
本發(fā)明提供了一種海量數(shù)據(jù)多維排序搜索方法,在云存儲(chǔ)的環(huán)境下提出動(dòng)態(tài)區(qū)間聚類算法dik-medoids,該方法在初始化文檔集時(shí),取文檔集中最大和最小文檔的向量差,等量的劃分為k個(gè)槽,槽的大小為超球體的直徑,把最接近槽中間向量的文檔設(shè)置為超球體的中心,每個(gè)文檔槽的大小視文檔集的多少而定,隨著文檔數(shù)量的增加,對(duì)槽進(jìn)行動(dòng)態(tài)劃分。同時(shí)使用新型的相似查詢樹將不同的領(lǐng)域的聚類組織起來(lái),通過(guò)控制上級(jí)超球體中子節(jié)點(diǎn)超球體的數(shù)量,動(dòng)態(tài)調(diào)整結(jié)構(gòu)以達(dá)到新增體積最小的目標(biāo),直至生成根節(jié)點(diǎn),與mrse-ss在查詢階段相同,將用戶提交的查詢向量表示為一個(gè)超球體,云服務(wù)器通過(guò)判斷查詢向量所代表的超球體與相似查詢樹中節(jié)點(diǎn)所代表的超球體之間的位置關(guān)系進(jìn)行判定,僅當(dāng)查詢向量與某領(lǐng)域構(gòu)成的超球體有交集時(shí)才將該領(lǐng)域納入結(jié)果集評(píng)價(jià)范圍,遞歸執(zhí)行這一步驟直至葉子節(jié)點(diǎn),但在葉子節(jié)點(diǎn)本文算法不僅查詢當(dāng)前節(jié)點(diǎn),并查詢其左右鄰居節(jié)點(diǎn),按照相關(guān)比例返回節(jié)點(diǎn)中k個(gè)最相關(guān)的文檔列表。因此聚類過(guò)程隨文檔量增加而動(dòng)態(tài)變化,并且初始化時(shí)間復(fù)雜度為o(1),適用于大數(shù)據(jù)環(huán)境下的密文檢索場(chǎng)景.通過(guò)實(shí)驗(yàn)證明該方法隨著文檔的線性增加,消耗的時(shí)間呈線性變化,且在很低的范圍之內(nèi),表明dik-medoids算法在初始化效率較傳統(tǒng)的dk-medoids算法有了較大的提升。
如圖1所示,包括以下步驟:
1)根據(jù)數(shù)據(jù)庫(kù)中文檔的領(lǐng)域相關(guān)度,將文檔進(jìn)行聚類,得到聚類組織相似查詢樹;
具體為:
1.1、根據(jù)數(shù)據(jù)庫(kù)中文檔的領(lǐng)域相關(guān)度,對(duì)相同領(lǐng)域的文檔生成一個(gè)多維的文檔向量dc;
1.2、設(shè)置單個(gè)槽中元素的門限值t;
1.3、初始化文檔向量dc中選擇向量值最大和最小的對(duì)象,分別做所有槽的上下界;
1.4、確定初始k值,將文檔向量dc化為等大小區(qū)間槽,利用公式(1)將所有文檔集放入對(duì)應(yīng)槽中,選取其中與槽中心點(diǎn)最近的對(duì)象作為該聚類中心,所述公式(1):
其中,p為文檔集中的點(diǎn),omax為文檔集中向量最大的對(duì)象,omin為文檔集中向量最小的對(duì)象;
對(duì)于新加入文檔向量dc的文檔對(duì)象,檢測(cè)與各個(gè)槽之間的距離,決定加入槽,并與當(dāng)前中心點(diǎn)比較,若其與槽中心點(diǎn)向量差小于當(dāng)前中心點(diǎn),則將該對(duì)象替換為中心點(diǎn),若超出原聚類的上下界則以該對(duì)象作為中心點(diǎn),按比例建立新槽。
1.5、檢測(cè)所有槽中成員元素是否超過(guò)門限值t,若存在超過(guò)門限值t,則對(duì)該槽調(diào)用dik-medoids算法繼續(xù)進(jìn)行聚類,生成子槽。
2)將不同的領(lǐng)域的聚類組織進(jìn)行聚類,形成相似查詢樹;
相似查詢樹是r樹的變形,它采用超球體進(jìn)行空間的分割,在二維平面上,相似查詢樹從下到上構(gòu)建而成,上層節(jié)點(diǎn)為恰好覆蓋下層節(jié)點(diǎn)的所有元素的超球體,每個(gè)節(jié)點(diǎn)由一個(gè)中心點(diǎn)和半徑表示,若該節(jié)點(diǎn)為葉子節(jié)點(diǎn),則中心點(diǎn)即為文檔向量值,若為中間節(jié)點(diǎn)則表示超球體的球心。
因?yàn)樗惴╩rse-ss中對(duì)于查詢返回的k個(gè)文檔只是查詢與查詢超球體交集最大的超球體,對(duì)于有小部分交集的超球體并沒(méi)有返回查詢內(nèi)容,然而用戶所需文檔可能在交集較小的超球體中出現(xiàn),這樣mrse-ss就不能滿足用戶的需求,因此本發(fā)明算法對(duì)其進(jìn)行改進(jìn),將ss樹的葉子節(jié)點(diǎn)加入指向其左右兄弟節(jié)點(diǎn)指針,因?yàn)楫?dāng)查詢超球體與文檔超球體所有交集最大時(shí),其該文檔超球體所相鄰的超球體也必然有所交集,因?yàn)槊總€(gè)相鄰超球體都是較相似的,所以當(dāng)查詢至葉子節(jié)點(diǎn)時(shí)交集最大的超球體,同時(shí)查詢其k個(gè)兄弟節(jié)點(diǎn),按比例返回文檔列表,其數(shù)據(jù)結(jié)構(gòu)如圖2所示。
3)獲取用戶提交的查詢向量,將查詢向量表示為查詢超球體;
4)根據(jù)查詢超球體與相似查詢樹中節(jié)點(diǎn)所代表的超球體的位置關(guān)系,獲取與查詢超球體交集最多的超球體,并對(duì)該超球體向下一層節(jié)點(diǎn)尋找,直到葉子節(jié)點(diǎn),并查詢其左右鄰居節(jié)點(diǎn),按照相關(guān)比例返回節(jié)點(diǎn)中k個(gè)最相關(guān)的文檔列表以及文檔向量。
具體包括:
4.1、服務(wù)器首先計(jì)算查詢超球體和根節(jié)點(diǎn)各個(gè)超球體之間的關(guān)系,得到交集最多的某個(gè)超球體;
4.2、根據(jù)得到的超球體,繼續(xù)向下一層節(jié)點(diǎn)尋找交集最多的超球體;
4.3、重復(fù)步驟4.2,直到葉子節(jié)點(diǎn),計(jì)算葉子節(jié)點(diǎn)和查詢超球體球心oqw之間的距離,獲得距離最近的葉子節(jié)點(diǎn);
相交的判定方法,如圖和公式所示,
(rqw+rn)>d(oqw,qn)>|rqw-rn|
包含的判定方法,如圖和公式所示,
d(oqw,on)<|rqw-rn|
不相交的判定方法,如圖和公式所示
d(oqw,on)>(rqw+rn);
4.4、查找所述相交的葉子節(jié)點(diǎn)的左右鄰居節(jié)點(diǎn),按比例范圍最近的k個(gè)文檔及列表。
本發(fā)明提出一種動(dòng)態(tài)聚類算法dik-medoids,在文檔初始化聚類時(shí),通過(guò)該文檔集的最大和最小文檔向量差,等量的劃分為k個(gè)槽,槽的大小為超球體的直徑,把最接近槽中間向量的文檔設(shè)置為超球體的中心,每個(gè)文檔槽的大小視文檔集的多少而定,隨著文檔數(shù)量的增加,對(duì)槽進(jìn)行動(dòng)態(tài)劃分。并且提出改進(jìn)的相似查詢樹將不同的領(lǐng)域的聚類組織起來(lái),與原算法不同的使在葉子節(jié)點(diǎn)本文算法不僅查詢當(dāng)前節(jié)點(diǎn),并查詢其左右鄰居節(jié)點(diǎn),按照相關(guān)比例返回節(jié)點(diǎn)中k個(gè)最相關(guān)的文檔列表。
驗(yàn)證實(shí)驗(yàn):
為了測(cè)試動(dòng)態(tài)區(qū)間聚類算法dik-medoids在真實(shí)數(shù)據(jù)集上的性能,建立了實(shí)驗(yàn)平臺(tái)驗(yàn)證算法的效率。測(cè)試平臺(tái)建立在intelcoree3-v12303.30gz的windows上,數(shù)據(jù)集采用模擬的不同的文檔集個(gè)數(shù)和關(guān)鍵詞數(shù)量,分別為256-8192篇文檔數(shù)量,10-50個(gè)關(guān)鍵詞。圖3(a)(b)(c)展示了dk-medoids算法與dik-medoids算法的在文檔個(gè)數(shù)變化、關(guān)鍵詞個(gè)數(shù)變化以及簇個(gè)數(shù)變化下效率對(duì)比情況。
在圖(a)中,當(dāng)文檔集合的個(gè)數(shù)呈指數(shù)增加時(shí),dk-medoids算法的初始索引響應(yīng)時(shí)間也是呈指數(shù)級(jí)增加,而dik-medoids算法的響應(yīng)時(shí)間近似線性增加并且時(shí)間很快,在文檔數(shù)為3000個(gè)時(shí),dk-medoids算法運(yùn)行時(shí)間為20s左右,但是dik-medoids算法僅為0.13s;在圖(b)中,文檔數(shù)目固定為2000個(gè)時(shí),當(dāng)文檔中關(guān)鍵詞數(shù)目變化時(shí),dk-medoids算法和dik-medoids算法的初始索引時(shí)間相差也極大,但是在關(guān)鍵詞數(shù)量在40以內(nèi)時(shí),兩個(gè)算法時(shí)間變化都很穩(wěn)定,當(dāng)關(guān)鍵詞多于40時(shí),dk-medoids算法時(shí)間變化較明顯,而dik-medoids算法時(shí)間依然穩(wěn)定在很低的范圍之內(nèi),說(shuō)明dik-medoids算法的初始時(shí)間不隨文檔中關(guān)鍵詞數(shù)量變化而變化;在圖(c)中,文檔數(shù)目依然固定為2000并且關(guān)鍵詞數(shù)量為20個(gè),當(dāng)初始簇的個(gè)數(shù)變化時(shí),dk-medoids算法隨著數(shù)目增多呈變化遞減(少于30時(shí)呈指數(shù)遞減,多于30時(shí)呈線性遞減)。dik-medoids算法時(shí)間隨著槽的數(shù)目增多而呈線性增長(zhǎng),在本次實(shí)驗(yàn)時(shí)模擬文檔都采用歸一化處理,并且數(shù)目控制在10000以內(nèi),因?yàn)槲臋n數(shù)目過(guò)大時(shí)(例如100000),dk-medoids算法時(shí)間將變得無(wú)法估計(jì),在長(zhǎng)時(shí)間內(nèi)都不能運(yùn)算完畢,但是dik-medoids算法依然在很短時(shí)間內(nèi)運(yùn)算完畢(1s之內(nèi)),這說(shuō)明dik-medoids算法在時(shí)間效率方面要遠(yuǎn)遠(yuǎn)高于dk-medoids算法,但是dik-medoids算法在運(yùn)行中也出現(xiàn)無(wú)法解釋的問(wèn)題,初始文檔多數(shù)都集中在某一個(gè)槽內(nèi),這樣使dik-medoids算法的查詢效率要遠(yuǎn)遠(yuǎn)小于dk-medoids算法。
綜合了以上對(duì)本發(fā)明進(jìn)行的正確性和效率的分析,可以看出dik-medoids算法,具有如下特點(diǎn):
dik-medoids算法執(zhí)行時(shí)間上遠(yuǎn)遠(yuǎn)小于dk-medoids算法,在三個(gè)影響因子(文檔數(shù)量、關(guān)鍵詞個(gè)數(shù)、槽個(gè)數(shù))的不同取值下,dik-medoids算法平均執(zhí)行時(shí)間不足1s,針對(duì)大量的數(shù)據(jù)集來(lái)說(shuō),dik-medoids算法具有明顯的優(yōu)勢(shì)。
對(duì)dik-medoids算法來(lái)說(shuō)影響較大的因素是初始槽的個(gè)數(shù),隨著槽的個(gè)數(shù)的增加算法的執(zhí)行時(shí)間也線性增加,而對(duì)dk-medoids算法來(lái)說(shuō)文檔數(shù)量是影響執(zhí)行時(shí)間最重要的因素,說(shuō)明dk-medoids算法適用于數(shù)據(jù)集大且槽個(gè)數(shù)偏小的情況。
dik-medoids算法由于在分槽時(shí)過(guò)多的數(shù)據(jù)集中在某一個(gè)槽中,導(dǎo)致在執(zhí)行效率上不如dk-medoids算法出色。
對(duì)于本領(lǐng)域技術(shù)人員而言,顯然能了解到上述具體實(shí)施例只是本發(fā)明的優(yōu)選方案,因此本領(lǐng)域的技術(shù)人員對(duì)本發(fā)明中的某些部分所可能作出的改進(jìn)、變動(dòng),體現(xiàn)的仍是本發(fā)明的原理,實(shí)現(xiàn)的仍是本發(fā)明的目的,均屬于本發(fā)明所保護(hù)的范圍。