本發(fā)明涉及查詢技術領域,特別涉及一種高維空間數據的查詢方法、裝置及計算機可讀介質。
背景技術:
隨著多媒體數據爆炸性的增長,海量信息的檢索也遇到了前所未有的挑戰(zhàn)。由于多媒體數據多為非結構化數據,包括圖像、視頻和音頻等,其語義信息無法直接由底層特征表達,使得傳統(tǒng)信息檢索不再適用,迫切需要發(fā)展面向多媒體數據的檢索方法。
通常的做法是為多媒體數據元提取特征向量,把海量多媒體數據庫上的相似性檢索轉化為大規(guī)模高維特征向量間的NN(Nearest Neighbor,最近鄰)查詢問題。給定一個查詢對象,在信息庫數據集中運用指定度量標準衡量特征向量間的相似性,最終找到和查詢對象在特征上最接近的數據元。
然而現有技術在進行相似性查詢時,是隨機在存儲有數據點的各個磁盤頁面上進行查詢,查詢效率較低。
技術實現要素:
本發(fā)明實施例提供了一種高維空間數據的查詢方法、裝置及計算機可讀介質,以提高查詢效率。
第一方面,本發(fā)明實施例提供了一種高維空間數據的查詢方法,包括:
針對高維空間的每一個數據點,確定相應的Z值;
將各個數據點按照相應Z值的大小順序,依次存儲到磁盤中的磁盤頁面上;
根據每一個數據點相應的Z值和存儲有數據點的各個磁盤頁面,建立索引表;
確定查詢點,并計算所述索引表中每一個磁盤頁面與所述查詢點的距離;
根據所述索引表中每一個磁盤頁面與所述查詢點的距離,進行數據查詢。
優(yōu)選地,所述針對高維空間的每一個數據點,確定相應的Z值,包括:
利用下述方式確定高維空間中當前數據點p的Z值:
確定復合LSH函數G,其中,復合LSH函數G中包括m個哈希函數,m為不小于1的整數;
計算當前數據點p在復合LSH函數G下的復合哈希鍵K=G(p);其中,ki用于表征復合哈希鍵K中第i個哈希值,每一個哈希值為二進制數;
針對復合哈希鍵K中包括的每一個哈希值進行位交叉操作,生成當前數據點p的Z值Z(p);
利用上述確定當前數據點p的Z值的方式,確定高維空間中除當前數據點p以外的其他每一個數據點相應的Z值。
優(yōu)選地,所述根據每一個數據點相應的Z值和存儲有數據點的各個磁盤頁面,建立索引表,包括:
在每一個磁盤頁面上選擇第一設定個數的數據點作為相應磁盤頁面的代表數據點;
根據每一個代表數據點對應的Z值,構建B+樹索引;
將所述B+樹索引和存儲有數據點的各個磁盤頁面,構建為索引表。
優(yōu)選地,
所述第一設定個數為2;
所述計算所述索引表中每一個磁盤頁面與所述查詢點的距離,包括:
利用第一公式計算所述索引表中當前磁盤頁面與所述查詢點q的距離DistPage:
所述第一公式:
其中,Zq用于表征所述查詢點q對應的Z值,L和U分別為在該當前磁盤頁面上選擇的兩個代表數據點分別對應的Z值;dist(Zq,L)用于表征Zq與L之間的距離,dist(Zq,U)用于表征Zq與U之間的距離。
優(yōu)選地,
進一步包括:建立第二設定個數的索引表,以根據所述第二設定個數的索引表執(zhí)行所述根據所述索引表中每一個磁盤頁面與所述查詢點的距離,進行數據查詢的操作;
所述根據所述索引表中每一個磁盤頁面與所述查詢點的距離,進行數據查詢,包括:
S1:將每一個索引表中距離所述查詢點最近的磁盤頁面,以及該磁盤頁面相鄰的一個磁盤頁面加載到頁面集中;
S2:在所述頁面集中計算距離所述查詢點最近的目標磁盤頁面,將所述目標磁盤頁面從所述頁面集中取出;
S3:針對取出的所述目標磁盤頁面上的各個數據點進行查詢,并將所述目標磁盤頁面所屬索引表中與所述目標磁盤頁面相鄰的且未加載到所述頁面集中的磁盤頁面加載到所述頁面集中,并繼續(xù)執(zhí)行S2-S3,直到S3中進行查詢的目標磁盤頁面為從所述頁面集中取出的第NP個磁盤頁面為止,其中,NP為預先設置的第三設定個數。
第二方面,本發(fā)明實施例提供了一種高維空間數據的查詢裝置,包括:
確定單元,用于針對高維空間的每一個數據點,確定相應的Z值;
放置單元,用于將各個數據點按照相應Z值的大小順序,依次存儲到磁盤中的磁盤頁面上;
建立單元,用于根據每一個數據點相應的Z值和存儲有數據點的各個磁盤頁面,建立索引表;
計算單元,用于確定查詢點,并計算所述索引表中每一個磁盤頁面與所述查詢點的距離;
查詢單元,用于根據所述索引表中每一個磁盤頁面與所述查詢點的距離,進行數據查詢。
優(yōu)選地,
所述確定單元,具體用于利用下述方式確定高維空間中當前數據點p的Z值:
確定復合LSH函數G,其中,復合LSH函數G中包括m個哈希函數,m為不小于1的整數;
計算當前數據點p在復合LSH函數G下的復合哈希鍵K=G(p);其中,ki用于表征復合哈希鍵K中第i個哈希值,每一個哈希值為二進制數;
針對復合哈希鍵K中包括的每一個哈希值進行位交叉操作,生成當前數據點p的Z值Z(p);
利用上述確定當前數據點p的Z值的方式,確定高維空間中除當前數據點p以外的其他每一個數據點相應的Z值;
和/或,
所述建立單元,具體用于:
在每一個磁盤頁面上選擇第一設定個數的數據點作為相應磁盤頁面的代表數據點;
根據每一個代表數據點對應的Z值,構建B+樹索引;
將所述B+樹索引和存儲有數據點的各個磁盤頁面,構建為索引表。
優(yōu)選地,
所述第一設定個數為2;
所述計算單元,具體用于利用第一公式計算所述索引表中當前磁盤頁面與所述查詢點q的距離DistPage:
所述第一公式:
其中,Zq用于表征所述查詢點q對應的Z值,L和U分別為在該當前磁盤頁面上選擇的兩個代表數據點分別對應的Z值;dist(Zq,L)用于表征Zq與L之間的距離,dist(Zq,U)用于表征Zq與U之間的距離。
優(yōu)選地,
所述建立單元,進一步用于建立第二設定個數的索引表,以根據所述第二設定個數的索引表執(zhí)行所述根據所述索引表中每一個磁盤頁面與所述查詢點的距離,進行數據查詢的操作;
所述查詢單元,具體用于執(zhí)行如下步驟:
S1:將每一個索引表中距離所述查詢點最近的磁盤頁面,以及該磁盤頁面相鄰的一個磁盤頁面加載到頁面集中;
S2:在所述頁面集中計算距離所述查詢點最近的目標磁盤頁面,將所述目標磁盤頁面從所述頁面集中取出;
S3:針對取出的所述目標磁盤頁面上的各個數據點進行查詢,并將所述目標磁盤頁面所屬索引表中與所述目標磁盤頁面相鄰的且未加載到所述頁面集中的磁盤頁面加載到所述頁面集中,并繼續(xù)執(zhí)行S2-S3,直到S3中進行查詢的目標磁盤頁面為從所述頁面集中取出的第NP個磁盤頁面為止,其中,NP為預先設置的第三設定個數。
第三方面,本發(fā)明實施例還提供了一種計算機可讀介質,所述計算機可讀介質上存儲有計算機指令,所述計算機指令在被處理器執(zhí)行時,使所述處理器執(zhí)行上述任一所述的方法。
本發(fā)明實施例提供了一種高維空間數據的查詢方法、裝置及計算機可讀介質,通過確定高維空間中每一個數據點的Z值,按照各個數據點Z值的大小順序,對數據點進行存儲,如此,相鄰的兩個磁盤頁面上的數據點對應Z值具有一定的關系,例如當前磁盤頁面上各個數據點分別對應的Z值均比相鄰磁盤頁面上各個數據點分別對應的Z值大或小,因此,磁盤頁面上的數據點具有一定的聚斂性,因此,根據查詢點與每一個磁盤頁面的距離來進行數據查詢,可以提高查詢效率。
附圖說明
為了更清楚地說明本發(fā)明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是本發(fā)明一個實施例提供的一種方法流程圖;
圖2是本發(fā)明一個實施例提供的另一種方法流程圖;
圖3是本發(fā)明一個實施例提供的位交叉操作示意圖;
圖4是本發(fā)明一個實施例提供的排序示意圖;
圖5是本發(fā)明一個實施例提供的裝置結構示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例,基于本發(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
如圖1所示,本發(fā)明實施例提供了一種高維空間數據的查詢方法,該方法可以包括以下步驟:
步驟101:針對高維空間的每一個數據點,確定相應的Z值;
步驟102:將各個數據點按照相應Z值的大小順序,依次存儲到磁盤中的磁盤頁面上;
步驟103:根據每一個數據點相應的Z值和存儲有數據點的各個磁盤頁面,建立索引表;
步驟104:確定查詢點,并計算所述索引表中每一個磁盤頁面與所述查詢點的距離;
步驟105:根據所述索引表中每一個磁盤頁面與所述查詢點的距離,進行數據查詢。
根據本發(fā)明上述實施例,通過確定高維空間中每一個數據點的Z值,按照各個數據點Z值的大小順序,對數據點進行存儲,如此,相鄰的兩個磁盤頁面上的數據點對應Z值具有一定的關系,例如當前磁盤頁面上各個數據點分別對應的Z值均比相鄰磁盤頁面上各個數據點分別對應的Z值大或小,因此,磁盤頁面上的數據點具有一定的聚斂性,因此,根據查詢點與每一個磁盤頁面的距離來進行數據查詢,可以提高查詢效率。
在一些常見的索引技術中,例如,SK-LSH(Locality-Sensitive Hashing,局部敏感哈希),也會將高維空間的數據點構建為空間曲線,SK-LSH索引技術是將高維空間的數據點構建為row-wise曲線,其中,row-wise曲線在高維空間中呈現的數據點聚斂性較差,因此,在本發(fā)明一個實施例中,可以將高維空間的數據點構建為z-order曲線,以使數據點在高維空間中呈現Z型,提高數據點的聚斂性,以進一步提高查詢效率。在構建z-order曲線時,需要確定出每一個數據點的Z值,可以通過如下方式確定高維空間中當前數據點p的Z值:
確定復合LSH函數G,其中,復合LSH函數G中包括m個哈希函數,m為不小于1的整數;
計算當前數據點p在復合LSH函數G下的復合哈希鍵K=G(p);其中,ki用于表征復合哈希鍵K中第i個哈希值,每一個哈希值為二進制數;
針對復合哈希鍵K中包括的每一個哈希值進行位交叉操作,生成當前數據點p的Z值Z(p);
利用上述確定當前數據點p的Z值的方式,確定高維空間中除當前數據點p以外的其他每一個數據點相應的Z值。
其中,該位交叉操作方式是首先從k1、k2、…、ki分別取第一個哈希值依次放置在Z(p)中,然后從k1、k2、…、ki分別取第二個哈希值依次放置在Z(p)中,……,一直到從k1、k2、…、ki分別取最后個哈希值依次放置在Z(p)中,此時的Z(p)即為當前數據點p的Z值。
由于i最大為m,若每一個哈希值為一個u位的二進制序列,那么Z(p)是一個長度為um的二進制串。
通過將高維空間的數據點構建為z-order曲線,可以使數據點在高維空間中呈現Z型,提高數據點的聚斂性,以進一步提高查詢效率。
在本發(fā)明一個實施例中,在將數據點存儲到磁盤上時,可以分別存儲在磁盤頁面上,每一個磁盤頁面可以存儲的數據點個數為B,若在加載該磁盤頁面上存儲的數據點時,由于一個磁盤頁面上存儲的數據點個數較多,若全部加載到內存中,可能會造成內存占用不夠的問題,給查詢的準確率帶來影響,因此,在建立索引表時,可以在每一個磁盤頁面上選擇第一設定個數的數據點作為相應磁盤頁面的代表數據點;根據每一個代表數據點對應的Z值,構建B+樹索引;將所述B+樹索引和存儲有數據點的各個磁盤頁面,構建為索引表。
其中,該第一設定個數由具體的開發(fā)人員來設置,在不同磁盤頁面上選擇的數據點的個數相同,也可以不相同,優(yōu)選地,該第一設定個數為2,且都在每一個磁盤頁面上選擇該磁盤頁面存儲的第一個數據點和最后一個數據點作為代表數據點。
如此,在將磁盤頁面加載到內存上時,可以只加載這兩個代表數據點,根據這兩個代表數據點即可以定位到磁盤頁面,進而對該磁盤頁面上的所有數據點進行查詢,從而可以降低內存的占用。
在進行數據查詢時,可以采用近似最近鄰查詢方式,由于在索引表中包括多個磁盤頁面,需要查詢距離查詢點最近的磁盤頁面,在第一設定個數為2時,在每一個磁盤頁面上分別取的代表數據點對應的Z值為L、U為例,那么可以通過如下方式計算所述索引表中每一個磁盤頁面與所述查詢點的距離:利用第一公式計算所述索引表中當前磁盤頁面與所述查詢點q的距離DistPage:
所述第一公式:
其中,Zq用于表征所述查詢點q對應的Z值,L和U分別為在該當前磁盤頁面上選擇的兩個代表數據點分別對應的Z值;dist(Zq,L)用于表征Zq與L之間的距離,dist(Zq,U)用于表征Zq與U之間的距離。
對于兩個Z值之間的大小關系,以及兩個Z值之間的距離,可以通過z-order曲線的特性來確定,從而可以利用上述第一公式計算出查詢點到磁盤頁面的距離。
在本發(fā)明一個實施例中,由于利用一個索引表進行數據點的查詢時,可能存在最近鄰候選點的漏報問題,從而給查詢結果的準確率帶來影響,因此,為了減少最近鄰候選點的漏報,可以建立第二設定個數的索引表,以根據所述第二設定個數的索引表執(zhí)行所述根據所述索引表中每一個磁盤頁面與所述查詢點的距離,進行數據查詢的操作。
在根據所述索引表中每一個磁盤頁面與所述查詢點的距離,進行數據查詢時,可以通過如下策略進行查詢:
S1:將每一個索引表中距離所述查詢點最近的磁盤頁面,以及該磁盤頁面相鄰的一個磁盤頁面加載到頁面集中;
S2:在所述頁面集中計算距離所述查詢點最近的目標磁盤頁面,將所述目標磁盤頁面從所述頁面集中取出;
S3:針對取出的所述目標磁盤頁面上的各個數據點進行查詢,并將所述目標磁盤頁面所屬索引表中與所述目標磁盤頁面相鄰的且未加載到所述頁面集中的磁盤頁面加載到所述頁面集中,并繼續(xù)執(zhí)行S2-S3,直到S3中進行查詢的目標磁盤頁面為從所述頁面集中取出的第NP個磁盤頁面為止,其中,NP為預先設置的第三設定個數。
設置第三設定個數NP的目的是為了便于控制磁盤開銷,因此,將NP作為查詢終止條件。
根據上述最近鄰查詢策略,可以保證每次從頁面集中取出的目標磁盤頁面是所有索引表中距離查詢點最近的磁盤頁面,且由于磁盤頁面中存儲的數據點的Z值存在聚斂性,從而可以提高查詢效率。
下面結合附圖并以一個具體的實施例對本發(fā)明進行進一步的描述。
如圖2所示,本發(fā)明實施例提供了一種高維空間數據的查詢方法,該方法可以包括以下步驟:
步驟201:針對高維空間的每一個數據點,確定相應的Z值。
對于z-order曲線是指多為空間Rm到一維空間I的一種映射,記作Z:Rm→I。若點x∈Rm,則x映射到z-order上的像Z(x)∈I,稱Z(x)為x的Z值。
其中,Z值的計算過程如下:確定高維空間對應的復合LSH函數G,其中,復合LSH函數G中包括m個哈希函數,m為不小于1的整數;給定高維空間中一個數據點p,該數據點p在復合LSH函數G下的復合哈希鍵K=G(p);其中,ki用于表征復合哈希鍵K中第i個哈希值,每一個哈希值為二進制數;可以將K看作m維空間中的坐標,并將坐標中每一位數值表示成一個u位的二進制序列,針對復合哈希鍵K中包括的每一個哈希值進行位交叉操作,生成當前數據點p的Z值Z(p);其中,Z(p)是字符串長度為um的二進制序列。
該位交叉操作是首先從k1、k2、…、ki分別取第一個哈希值依次放置在Z(p)中,然后從k1、k2、…、ki分別取第二個哈希值依次放置在Z(p)中,……,一直到從k1、k2、…、ki分別取最后個哈希值依次放置在Z(p)中,此時的Z(p)即為當前數據點p的Z值。
請參考圖3,以ki和ki+1兩個哈希值為例,每一個哈希值中包括三位二進制數,那么對這兩個哈希值進行位交叉操作之后,得到二進制序列長度為6的Z(ki,ki+1)。
步驟202:根據z-order曲線的特性,確定各個Z值之間的關系。
Z值的前綴:給定高維空間的一個數據點p,它的Z值為Z(p)=(z1,z2,…zM),其中,M=um,表示z-order二進制串的長度。令l代表Z值的前綴長度,其前綴表示為pref(Z,l),那么:
pref(Z,l)=(z1,z2,…zM)
Z值的非公共前綴長度:給定兩個Z值序列Z1=(z1,,z1,,…z1,)和Z2=(z2,,z2,,…z2,),若存在pref(Z1,l)=pref(Z2,l)成立,并且pref(Z1,l+1≠prefZ2,l+1,0<<l<<M,那么定義Z1,Z2的非公共前綴長度KDZ1,Z2為:KD(Z1,Z2)=M-l。
如果Z1,Z2滿足pref(Z1,M)=pref(Z2,M),那么KD(Z1,Z2)=0。Z值間的距離:給定兩個Z值序列Z1,Z2,定義它們之間的距離為:
dist(Z1,Z2)=KD(Z1,Z2)
Z值間的比較關系:給定兩個Z值序列Z1,Z2,定義它們之間的比較關系如下:
步驟203:將高維空間中數據集D包括的每一個數據點對應的Z值按照升序排列,得到排序后的Z',并按照該Z值升序的順序重新將數據點進行排列,得到排序后的數據集D',將數據集D'存儲到磁盤上。
請參考圖4,為排序示意圖,最終得到排序后的數據集D'。
在數據集D'中的數據點存儲到磁盤上時,可以存儲為多個磁盤頁面,每一個磁盤頁面的大小為B,表示一個磁盤頁面可以容納的數據點的個數,那么整個數據集D'將占據個磁盤頁面。
步驟204:在每一個磁盤頁面上選擇第一數據點和最后一個數據點作為代表數據點,這兩個代表數據點對應的Z值作為該磁盤頁面的代表。
其中,在各個磁盤頁面上選擇的數據點個數可以相同也可以不同,且選擇的數據點也可以是隨機選擇,優(yōu)選地,設定在每一個磁盤頁面上選擇數據點的個數為2,且選擇第一個數據點和最后一個數據點作為代表數據點。
可以記第i個磁盤頁面上選取的代表為<Li,Ui>。
步驟205:將各個磁盤頁面上選擇的兩個代表數據點對應的Z值構建為B+樹索引,該B+樹索引和各個磁盤頁面存儲的數據點構成索引表T。
步驟206:根據索引表的構成方式建立N個索引表。
由于利用一個索引表進行數據點的查詢時,可能存在最近鄰候選點的漏報問題,從而給查詢結果的準確率帶來影響,因此,為了減少最近鄰候選點的漏報,可以建立多個索引表,以根據多個索引表中每一個磁盤頁面與查詢點的距離,進行數據查詢的操作。
由于D'的原因,每創(chuàng)建一個索引表就意味著多一份原始數據集的拷貝,對于大規(guī)模高維數據集來說,這是一筆可觀的空間開銷。由于本實施例使用了聚斂性更高的z-order曲線,因此在索引中鄰近點的局部聚斂性得到進一步優(yōu)化,使得在最近鄰查詢時同樣的磁盤訪問能夠加載到更多候選點,分擔了多個索引表的任務。本實施例相對于現有技術可以建立更少的索引表達到相同的搜索精度。
步驟207:確定查詢點以及設置查詢過程中能夠加載的磁盤頁面?zhèn)€數Np。
步驟208:針對每一個索引表,計算當前索引表中每一個磁盤頁面與查詢點之間的距離。
其中,查詢點q與一個磁盤頁面之間的距離可以通過如下公式來計算:
其中,Zq用于表征所述查詢點q對應的Z值,L和U分別為在該當前磁盤頁面上選擇的兩個代表數據點分別對應的Z值;dist(Zq,L)用于表征Zq與L之間的距離,dist(Zq,U)用于表征Zq與U之間的距離。
對于兩個Z值之間的大小關系,以及兩個Z值之間的距離,可以根據步驟202來確定。
步驟209:將每一個索引表中距離所述查詢點最近的磁盤頁面,以及該磁盤頁面相鄰的一個磁盤頁面加載到頁面集Q中。
步驟210:在頁面集Q中計算距離查詢點最近的目標磁盤頁面,將目標磁盤頁面從頁面集Q中取出。
步驟211:針對取出的目標磁盤頁面上的各個數據點進行查詢,并將目標磁盤頁面所屬索引表中與目標磁盤頁面相鄰的且未加載到頁面集Q中的磁盤頁面加載到頁面集Q中,并繼續(xù)執(zhí)行步驟210-211,直到步驟211中進行查詢的目標磁盤頁面為從所述頁面集Q中取出的第NP個磁盤頁面為止。
針對步驟209-211,假設有三個索引表,N1、N2和N3,在N1索引表中確定距離查詢點最近的是磁盤頁面B11,在N2索引表中確定距離查詢點最近的是磁盤頁面B25,在N3索引表中確定距離查詢點最近的是磁盤頁面B32,那么將每一個索引表中距離查詢點最近的磁盤頁面以及該磁盤頁面的一個相鄰磁盤頁面加載到頁面集Q中,本實施例以加載該最近距離的磁盤頁面的右側磁盤頁面為例進行說明,那么將磁盤頁面B11、磁盤頁面B12、磁盤頁面B25、磁盤頁面B26、磁盤頁面B32和磁盤頁面B33加載到頁面集Q中。
在頁面集Q中包括的6個磁盤頁面中進一步確定距離查詢點q最近的磁盤頁面,假設該目標磁盤頁面為磁盤頁面B25,那么將磁盤頁面B25從頁面集Q中取出,以對磁盤頁面B25上存儲的各個數據點進行相似性查詢。
由于頁面集Q中磁盤頁面B25被取出,那么確定磁盤頁面B25所屬索引表為N2,且由于磁盤頁面B26已經被加載到了頁面集Q中,那么將磁盤頁面B24加載到頁面集Q中,并繼續(xù)執(zhí)行步驟210-211。
在本發(fā)明一個實施例中,若只使用一個索引表進行查詢,那么無需建立頁面集Q,只需要在索引表中確定與查詢點最近的磁盤頁面,每確定出距離查詢點最近的磁盤頁面之后則進行加載查詢,在查詢結束后繼續(xù)在該索引表剩余的磁盤頁面中確定距離查詢點最近的磁盤頁面,直到加載到Np個磁盤頁面為止。
請參考圖5,本發(fā)明實施例還提供了一種高維空間數據的查詢裝置,包括:
確定單元501,用于針對高維空間的每一個數據點,確定相應的Z值;
放置單元502,用于將各個數據點按照相應Z值的大小順序,依次存儲到磁盤中的磁盤頁面上;
建立單元503,用于根據每一個數據點相應的Z值和存儲有數據點的各個磁盤頁面,建立索引表;
計算單元504,用于確定查詢點,并計算所述索引表中每一個磁盤頁面與所述查詢點的距離;
查詢單元505,用于根據所述索引表中每一個磁盤頁面與所述查詢點的距離,進行數據查詢。
在本發(fā)明一個實施例中,所述確定單元,具體用于利用下述方式確定高維空間中當前數據點p的Z值:
確定復合LSH函數G,其中,復合LSH函數G中包括m個哈希函數,m為不小于1的整數;
計算當前數據點p在復合LSH函數G下的復合哈希鍵K=G(p);其中,ki用于表征復合哈希鍵K中第i個哈希值,每一個哈希值為二進制數;
針對復合哈希鍵K中包括的每一個哈希值進行位交叉操作,生成當前數據點p的Z值Z(p);
利用上述確定當前數據點p的Z值的方式,確定高維空間中除當前數據點p以外的其他每一個數據點相應的Z值。
在本發(fā)明一個實施例中,所述建立單元,具體用于:
在每一個磁盤頁面上選擇第一設定個數的數據點作為相應磁盤頁面的代表數據點;
根據每一個代表數據點對應的Z值,構建B+樹索引;
將所述B+樹索引和存儲有數據點的各個磁盤頁面,構建為索引表。
在本發(fā)明一個實施例中,所述第一設定個數為2;
所述計算單元,具體用于利用第一公式計算所述索引表中當前磁盤頁面與所述查詢點q的距離DistPage:
所述第一公式:
其中,Zq用于表征所述查詢點q對應的Z值,L和U分別為在該當前磁盤頁面上選擇的兩個代表數據點分別對應的Z值;dist(Zq,L)用于表征Zq與L之間的距離,dist(Zq,U)用于表征Zq與U之間的距離。
在本發(fā)明一個實施例中,所述建立單元,進一步用于建立第二設定個數的索引表,以根據所述第二設定個數的索引表執(zhí)行所述根據所述索引表中每一個磁盤頁面與所述查詢點的距離,進行數據查詢的操作;
所述查詢單元,具體用于執(zhí)行如下步驟:
S1:將每一個索引表中距離所述查詢點最近的磁盤頁面,以及該磁盤頁面相鄰的一個磁盤頁面加載到頁面集中;
S2:在所述頁面集中計算距離所述查詢點最近的目標磁盤頁面,將所述目標磁盤頁面從所述頁面集中取出;
S3:針對取出的所述目標磁盤頁面上的各個數據點進行查詢,并將所述目標磁盤頁面所屬索引表中與所述目標磁盤頁面相鄰的且未加載到所述頁面集中的磁盤頁面加載到所述頁面集中,并繼續(xù)執(zhí)行S2-S3,直到S3中進行查詢的目標磁盤頁面為從所述頁面集中取出的第NP個磁盤頁面為止,其中,NP為預先設置的第三設定個數。
本發(fā)明還提供了一種計算機可讀介質,存儲用于使一機器執(zhí)行如本文所述的程序代碼的查詢方法的指令。具體地,可以提供配有存儲介質的系統(tǒng)或者裝置,在該存儲介質上存儲著實現上述實施例中任一實施例的功能的軟件程序代碼,且使該系統(tǒng)或者裝置的計算機(或CPU或MPU)讀出并執(zhí)行存儲在存儲介質中的程序代碼。
在這種情況下,從存儲介質讀取的程序代碼本身可實現上述實施例中任何一項實施例的功能,因此程序代碼和存儲程序代碼的存儲介質構成了本發(fā)明的一部分。
用于提供程序代碼的存儲介質實施例包括軟盤、硬盤、磁光盤、光盤(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD+RW)、磁帶、非易失性存儲卡和ROM??蛇x擇地,可以由通信網絡從服務器計算機上下載程序代碼。
此外,應該清楚的是,不僅可以通過執(zhí)行計算機所讀出的程序代碼,而且可以通過基于程序代碼的指令使計算機上操作的操作系統(tǒng)等來完成部分或者全部的實際操作,從而實現上述實施例中任意一項實施例的功能。
此外,可以理解的是,將由存儲介質讀出的程序代碼寫到插入計算機內的擴展板中所設置的存儲器中或者寫到與計算機相連接的擴展單元中設置的存儲器中,隨后基于程序代碼的指令使安裝在擴展板或者擴展單元上的CPU等來執(zhí)行部分和全部實際操作,從而實現上述實施例中任一實施例的功能。
綜上所述,本發(fā)明各個實施例至少可以實現如下有益效果:
1、在本發(fā)明實施例中,通過確定高維空間中每一個數據點的Z值,按照各個數據點Z值的大小順序,對數據點進行存儲,如此,相鄰的兩個磁盤頁面上的數據點對應Z值具有一定的關系,例如當前磁盤頁面上各個數據點分別對應的Z值均比相鄰磁盤頁面上各個數據點分別對應的Z值大或小,因此,磁盤頁面上的數據點具有一定的聚斂性,因此,根據查詢點與每一個磁盤頁面的距離來進行數據查詢,可以提高查詢效率。
2、在本發(fā)明實施例中,通過將高維空間的數據點構建為z-order曲線,可以使數據點在高維空間中呈現Z型,且z-order曲線具有局部空間優(yōu)先遍歷特性,可以改善最近鄰候選點在磁盤中的局部聚斂性,使得在更有限的磁盤訪問次數下仍舊保持較高的查詢精度。
3、在本發(fā)明實施例中,通過建立多個索引表,以根據多個索引表中包括的每一個磁盤頁面與所述查詢點的距離,進行數據查詢的操作,可以減少最近鄰候選點的漏報問題。
4、在本發(fā)明實施例中,通過選取z-order曲線作為復合哈希鍵值的排序依據,進一步優(yōu)化候選點的局部聚斂性,從而改善磁盤訪問效率,提升最近鄰搜索的準確率。同時,準確率的提升也減輕了對多索引表的依賴,可以減少索引表的個數,降低索引結構規(guī)模,節(jié)省空間開銷。
上述裝置內的各單元之間的信息交互、執(zhí)行過程等內容,由于與本發(fā)明方法實施例基于同一構思,具體內容可參見本發(fā)明方法實施例中的敘述,此處不再贅述。
需要說明的是,在本文中,諸如第一和第二之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個······”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同因素。
本領域普通技術人員可以理解:實現上述方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成,前述的程序可以存儲在計算機可讀取的存儲介質中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質包括:ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質中。
最后需要說明的是:以上所述僅為本發(fā)明的較佳實施例,僅用于說明本發(fā)明的技術方案,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內所做的任何修改、等同替換、改進等,均包含在本發(fā)明的保護范圍內。