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