專(zhuān)利名稱(chēng):鄰元素搜索設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)庫(kù)的鄰元素搜索設(shè)備。
背景技術(shù):
多維索引技術(shù)是一種用于對(duì)數(shù)據(jù)集合進(jìn)行范圍搜索或鄰元素搜索的技術(shù),該數(shù)據(jù) 集合被表示為一個(gè)特征量空間中的若干點(diǎn),例如從多媒體數(shù)據(jù)中提取的組成數(shù)據(jù)和特征 量。該技術(shù)涉及用圖形元素以?xún)?nèi)含關(guān)系來(lái)分割特征量空間,以便提高搜索效率。多維索引 技術(shù)的例子包括使用矩陣作為有界圖形元素(被稱(chēng)為“單元”)的R樹(shù)和R*樹(shù)、使用球形作 為單元的SS樹(shù)、以及使用球形和矩形的重疊部分作為單元的SR樹(shù)。此外,已提出了便于沿抽象樹(shù)來(lái)實(shí)施多維索引的框架(例如,Joseph Μ. Hellerstein, Jeffrey F. Naughton 禾口 Avi Pfeffer 的"Generalized Search Trees for Database Systems", Proc. 21st Int' IConf. on Very Large Data Bases (關(guān)于超大數(shù)據(jù)庫(kù) 的第21屆國(guó)際會(huì)議的會(huì)刊),Zurich, 1995年9月,562-5730)。這些索引技術(shù)基于以下原理層級(jí)化地劃分多維空間,以限制搜索范圍。這是因 為限制搜索范圍相應(yīng)地減少了計(jì)算量。然而,在高維空間中,會(huì)出現(xiàn)從某個(gè)點(diǎn)至離它最近點(diǎn) 之間的距離與從該點(diǎn)至離它最遠(yuǎn)點(diǎn)之間的距離相互沒(méi)有差別的現(xiàn)象。該現(xiàn)象被稱(chēng)為“維度 困局”,這造成了以下問(wèn)題搜索范圍不能被限制,結(jié)果所需的計(jì)算量近似等于線(xiàn)性搜索量。 為了解決高維空間的問(wèn)題,已對(duì)近似最近鄰元素搜索進(jìn)行了研究(例如,Arya, S.,Mount, D. Μ. ,Netanyahu,N. S. ,Silverman,R.,禾口Wu,A. ,“An optimal algorithm for approximate nearest neighborsearching,,, ACM-SIAM symposium on Discrete Algorithms (離散算法 ACM-SIAM研討會(huì))論文集)。然而,在該引用文獻(xiàn)中描述的搜索系統(tǒng)僅可以應(yīng)用于平衡樹(shù),并且搜索方案依賴(lài) 于框架。因而,該搜索系統(tǒng)的問(wèn)題是不能選擇適于給定目標(biāo)的搜索方案。此外,常規(guī)的近似鄰元素搜索涉及對(duì)于每個(gè)節(jié)點(diǎn)不加區(qū)別地將修剪范圍增大到 (l+O倍。然而,大的子樹(shù)(具有大量從屬點(diǎn)的節(jié)點(diǎn))和小的子樹(shù)(具有少量從屬點(diǎn)的子 樹(shù))在重要性和搜索成本上不同。本發(fā)明的目的是提供一種可選擇適于每個(gè)搜索目標(biāo)的索引的鄰元素搜索設(shè)備。本發(fā)明的另一個(gè)目的是通過(guò)基于節(jié)點(diǎn)信息(包括有界區(qū)的大小和節(jié)點(diǎn)中的點(diǎn)數(shù)) 改變修剪度,優(yōu)化搜索時(shí)間和搜索準(zhǔn)確性之間的折衷。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的第一方面,提出了一種鄰元素搜索設(shè)備。該鄰元素搜索設(shè)備包括存儲(chǔ)裝置(存儲(chǔ)單元),該存儲(chǔ)裝置存儲(chǔ)元表,該元表包含與每個(gè)索引的數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián)的索 引相關(guān)元數(shù)據(jù);數(shù)據(jù)庫(kù)裝置(數(shù)據(jù)庫(kù)單元),該數(shù)據(jù)庫(kù)裝置在從用戶(hù)接收到指令時(shí)搜索與該 指令相關(guān)聯(lián)的索引,并讓索引裝置(索引單元)使用與該索引相關(guān)聯(lián)的索引相關(guān)元數(shù)據(jù)來(lái) 執(zhí)行與該指令相關(guān)聯(lián)的處理;和索引裝置,該索引裝置基于來(lái)自數(shù)據(jù)庫(kù)裝置的指令,使用索 引相關(guān)元數(shù)據(jù)來(lái)執(zhí)行與所述指令相關(guān)聯(lián)的處理。根據(jù)本發(fā)明的第二方面,提出了一種鄰元素搜索設(shè)備。該鄰元素搜索設(shè)備是搜索 存在于指定的查詢(xún)點(diǎn)附近的點(diǎn)數(shù)據(jù)的鄰元素搜索設(shè)備,其中根據(jù)每個(gè)節(jié)點(diǎn)的從屬點(diǎn)的數(shù)量 確定查詢(xún)點(diǎn)的搜索區(qū),使得用于具有大量從屬點(diǎn)的節(jié)點(diǎn)的搜索范圍小于用于具有少量從屬 點(diǎn)的節(jié)點(diǎn)的搜索范圍。根據(jù)本發(fā)明,可以提供可選擇適于每個(gè)搜索目標(biāo)的索引的鄰元素搜索設(shè)備。此外,根據(jù)本發(fā)明,通過(guò)基于節(jié)點(diǎn)信息(包括有界區(qū)的大小和節(jié)點(diǎn)中的點(diǎn)數(shù))改變 修剪度來(lái)優(yōu)化搜索時(shí)間和搜索準(zhǔn)確性之間的折衷。
圖1是顯示鄰元素搜索設(shè)備的示例性配置的框圖;圖2是顯示節(jié)點(diǎn)表的示例性數(shù)據(jù)結(jié)構(gòu)的示意圖;圖3是顯示點(diǎn)表的示例性數(shù)據(jù)結(jié)構(gòu)的示意圖;圖4是顯示從某個(gè)樹(shù)數(shù)據(jù)創(chuàng)建的節(jié)點(diǎn)表和點(diǎn)表的例子的示意圖;圖5是顯示元表的示例性數(shù)據(jù)結(jié)構(gòu)的示意圖;圖6是顯示SR樹(shù)的示例性數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)的示意圖;圖7是顯示索引相關(guān)元數(shù)據(jù)的基礎(chǔ)數(shù)據(jù)的示例性數(shù)據(jù)結(jié)構(gòu)的示意圖;圖8是顯示索引相關(guān)元數(shù)據(jù)的中間節(jié)點(diǎn)數(shù)據(jù)的示例性數(shù)據(jù)結(jié)構(gòu)的示意圖;圖9是顯示索引相關(guān)元數(shù)據(jù)的葉節(jié)點(diǎn)數(shù)據(jù)的示例性數(shù)據(jù)結(jié)構(gòu)的示意圖;圖10是顯示執(zhí)行knnSearch的程序的偽碼的示意圖;圖11是用于解釋大的子樹(shù)由于具有大的有界范圍而不太可能包含鄰元素點(diǎn)的示 意圖;圖12是用于解釋大的子樹(shù)由于具有大的有界范圍而不太可能包含鄰元素點(diǎn)的示 意圖;圖13是顯示由根據(jù)一種實(shí)施方式的鄰元素搜索設(shè)備執(zhí)行的近似鄰元素搜索過(guò)程 的例子的流程圖;以及圖14是根據(jù)該實(shí)施方式的近似鄰元素搜索結(jié)果和根據(jù)現(xiàn)有技術(shù)的近似鄰元素搜 索結(jié)果的對(duì)比圖。這些附圖被并入說(shuō)明書(shū)中并構(gòu)成說(shuō)明書(shū)的一部分,用來(lái)圖示本發(fā)明的實(shí)施例,并 且與上文給出的發(fā)明內(nèi)容以及下文給出的具體實(shí)施方式
一起用來(lái)解釋本發(fā)明的原理。
具體實(shí)施例方式下面將參考附圖來(lái)描述本發(fā)明的實(shí)施方式。[術(shù)語(yǔ)定義]下面將描述在本說(shuō)明書(shū)中使用的主要術(shù)語(yǔ)的定義。
“多維數(shù)據(jù)(點(diǎn)數(shù)據(jù))”是指由多個(gè)值組成的一條數(shù)據(jù)?!発鄰元素搜索”是指搜索在一個(gè)給定點(diǎn)(查詢(xún))的附近存在的k個(gè)點(diǎn)的搜索方法?!敖凄徳厮阉鳌笔侵敢越品绞剿阉鬣徳?。近似鄰元素搜索不總是提供最佳 結(jié)果,但有利之處在于它比通常的鄰元素搜索要快?!皹?shù)節(jié)點(diǎn)的從屬點(diǎn)的數(shù)量”是指從屬于包括子樹(shù)的節(jié)點(diǎn)的點(diǎn)數(shù)據(jù)的條數(shù)。“頁(yè)訪(fǎng)問(wèn)數(shù)”是指I/O的數(shù)量。在該上下文中使用的“頁(yè)”是指大小為某一尺寸的 區(qū)域。頁(yè)訪(fǎng)問(wèn)數(shù)被用作數(shù)據(jù)庫(kù)的性能的指標(biāo)。這個(gè)因素不依賴(lài)于設(shè)備,I/O數(shù)對(duì)于大多數(shù) 設(shè)備的處理時(shí)長(zhǎng)的影響要比計(jì)算量的影響大?!白钚∮薪缜?MBS) ”是指包括一節(jié)點(diǎn)的所有從屬點(diǎn)的超球面。“最小有界矩形(MBR),,是指包括一節(jié)點(diǎn)的所有從屬點(diǎn)的超矩形?!癝R樹(shù)”是指將MBS和MBR的重疊區(qū)定義為有界區(qū)的多維索引結(jié)構(gòu)。[第一實(shí)施方式][1. 1.鄰元素搜索設(shè)備的配置例]根據(jù)本發(fā)明第一實(shí)施方式的鄰元素搜索設(shè)備是執(zhí)行鄰元素搜索的系統(tǒng)。鄰元素搜索設(shè)備是包括中央處理單元(CPU)、主存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM) 和輸入/輸出裝置(I/O)、可選地還包括外部存儲(chǔ)裝置(例如硬盤(pán)驅(qū)動(dòng)器)的信息處理設(shè) 備,或者是包括這樣的信息處理設(shè)備的系統(tǒng)。例如,鄰元素搜索設(shè)備是計(jì)算機(jī)、蜂窩電話(huà)、HD 記錄器或家用電器。鄰元素搜索設(shè)備的ROM或硬盤(pán)驅(qū)動(dòng)器存儲(chǔ)程序,該程序被加載到主存 儲(chǔ)器中,并且CPU執(zhí)行該程序來(lái)實(shí)現(xiàn)鄰元素搜索設(shè)備。圖1顯示鄰元素搜索設(shè)備的示例性配置。鄰元素搜索設(shè)備1具有存儲(chǔ)部10、數(shù)據(jù) 庫(kù)管理部(也被稱(chēng)為框架)20、索引部30、輸入部40和輸出部50。[1. 1. 1.存儲(chǔ)部]存儲(chǔ)部10對(duì)應(yīng)于根據(jù)本發(fā)明的存儲(chǔ)裝置(或存儲(chǔ)單元),其功能是存儲(chǔ)用于搜索 的數(shù)據(jù)。更具體地,存儲(chǔ)部10存儲(chǔ)節(jié)點(diǎn)表11、點(diǎn)表12和元表13。節(jié)點(diǎn)表11是描述用于索引的節(jié)點(diǎn)信息的數(shù)據(jù)(表)。圖2顯示節(jié)點(diǎn)表11的示例 性數(shù)據(jù)結(jié)構(gòu)。節(jié)點(diǎn)表11對(duì)于每個(gè)節(jié)點(diǎn)都有一條記錄110,每條記錄具有存儲(chǔ)節(jié)點(diǎn)ID的節(jié)點(diǎn) ID字段111和存儲(chǔ)節(jié)點(diǎn)內(nèi)容的節(jié)點(diǎn)內(nèi)容字段112。節(jié)點(diǎn)ID是唯一地識(shí)別節(jié)點(diǎn)的信息,節(jié)點(diǎn) 內(nèi)容是指示索引的節(jié)點(diǎn)內(nèi)容的信息。例如,如果索引結(jié)構(gòu)是SR樹(shù),那么節(jié)點(diǎn)內(nèi)容包括父節(jié) 點(diǎn)的id、有界區(qū)和子節(jié)點(diǎn)的id等等。點(diǎn)表12是描述每個(gè)點(diǎn)被包含在哪個(gè)節(jié)點(diǎn)中的信息的數(shù)據(jù)(表)。圖3顯示點(diǎn)表 12的示例性數(shù)據(jù)結(jié)構(gòu)。點(diǎn)表12對(duì)于每個(gè)點(diǎn)有一條記錄120,每條記錄具有存儲(chǔ)點(diǎn)ID的點(diǎn) ID字段121和存儲(chǔ)包含相關(guān)點(diǎn)的節(jié)點(diǎn)的節(jié)點(diǎn)ID的上級(jí)ID字段122。圖4是顯示從某個(gè)樹(shù)數(shù)據(jù)創(chuàng)建的節(jié)點(diǎn)表11和點(diǎn)表12的例子的示意圖。樹(shù)數(shù)據(jù) 40具有10個(gè)節(jié)點(diǎn),在圖中用圓圈表示這些節(jié)點(diǎn)。每個(gè)圓圈中的數(shù)字表示該節(jié)點(diǎn)的節(jié)點(diǎn)ID。 下文中用括號(hào) <> 中顯示的節(jié)點(diǎn)ID來(lái)區(qū)分各個(gè)節(jié)點(diǎn)。例如,具有節(jié)點(diǎn)ID “1”的節(jié)點(diǎn)將被稱(chēng) 為節(jié)點(diǎn)<1>。樹(shù)數(shù)據(jù)40具有根節(jié)點(diǎn)<4> ;3個(gè)中間節(jié)點(diǎn)<5>、<6>和<7> ;和5個(gè)葉節(jié)點(diǎn)<1>、 <2>、<10>、<8>和 <9>。雖然節(jié)點(diǎn)可包含點(diǎn)數(shù)據(jù),但假定在該樹(shù)數(shù)據(jù)40中只有葉節(jié)點(diǎn)具有點(diǎn)數(shù)據(jù)。點(diǎn)數(shù)據(jù) 的數(shù)量為28條,從1到28的點(diǎn)ID被分配給28條點(diǎn)數(shù)據(jù)。在圖4中,沒(méi)有顯示點(diǎn)數(shù)據(jù)。
圖4還示出從樹(shù)數(shù)據(jù)40創(chuàng)建的節(jié)點(diǎn)表11和點(diǎn)表12。元表13是描述用于索引的元信息的數(shù)據(jù)(表)。圖5顯示元表13的示例性的數(shù) 據(jù)結(jié)構(gòu)。元表13對(duì)于每種索引類(lèi)型都有一條記錄130,每條記錄具有存儲(chǔ)點(diǎn)維度(每個(gè)點(diǎn) 的特征量的數(shù)量)的點(diǎn)維度字段131、存儲(chǔ)表示索引類(lèi)型的信息的索引類(lèi)型字段132、存儲(chǔ) 包含在索引中的節(jié)點(diǎn)的大小的節(jié)點(diǎn)大小字段133、存儲(chǔ)包含在索引中的最大節(jié)點(diǎn)數(shù)的最大 節(jié)點(diǎn)數(shù)字段134、存儲(chǔ)包含在索引中的點(diǎn)的點(diǎn)ID的最大值的最大點(diǎn)ID字段135、以及存儲(chǔ) 用于索引的索引相關(guān)元數(shù)據(jù)的索引相關(guān)元數(shù)據(jù)字段136。索引相關(guān)元數(shù)據(jù)是索引部30執(zhí)行鄰元素搜索等所使用的數(shù)據(jù)。下面將描述索引 相關(guān)元數(shù)據(jù)的例子。雖然下文中是在假定索引類(lèi)型是SR樹(shù)的情況下來(lái)描述索引相關(guān)元數(shù) 據(jù),但SR樹(shù)不是可在本發(fā)明中使用的唯一索引類(lèi)型,根據(jù)本發(fā)明的搜索設(shè)備1可被應(yīng)用于 可以創(chuàng)建允許鄰元素搜索等的索引的任何方案。圖6是顯示SR樹(shù)的示例性的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)的示意圖。下面將描述具有這樣的數(shù) 據(jù)結(jié)構(gòu)的SR樹(shù)的索引相關(guān)元數(shù)據(jù)的例子。在這個(gè)例子中,索引相關(guān)元數(shù)據(jù)由基礎(chǔ)數(shù)據(jù)、中 間節(jié)點(diǎn)數(shù)據(jù)和葉節(jié)點(diǎn)數(shù)據(jù)組成。圖7顯示索引相關(guān)元數(shù)據(jù)的基礎(chǔ)數(shù)據(jù)的示例性數(shù)據(jù)結(jié)構(gòu)。 圖8顯示索引相關(guān)元數(shù)據(jù)的中間節(jié)點(diǎn)數(shù)據(jù)的示例性數(shù)據(jù)結(jié)構(gòu)。圖中顯示的從第5條目“子 節(jié)點(diǎn)的節(jié)點(diǎn)ID”至第10條目“子節(jié)點(diǎn)的MBR的上限”之間的條目被重復(fù)與節(jié)點(diǎn)的單元數(shù)相 同的次數(shù),但在圖中僅針對(duì)一個(gè)單元來(lái)顯示這些條目。圖9是顯示索引相關(guān)元數(shù)據(jù)的葉節(jié) 點(diǎn)數(shù)據(jù)的示例性數(shù)據(jù)結(jié)構(gòu)的示意圖。圖中所示的第5條目“點(diǎn)數(shù)據(jù)”被重復(fù)與節(jié)點(diǎn)中包含 的點(diǎn)數(shù)相同的次數(shù),但在該圖中只針對(duì)一個(gè)點(diǎn)顯示了該條目?;仡^參考圖1,將描述鄰元素搜索設(shè)備1的示例性配置。[1. 1. 2.數(shù)據(jù)庫(kù)管理部]數(shù)據(jù)庫(kù)管理部20對(duì)應(yīng)于根據(jù)本發(fā)明的數(shù)據(jù)庫(kù)裝置(或數(shù)據(jù)庫(kù)單元),其功能是響 應(yīng)于索引部30的請(qǐng)求來(lái)處理對(duì)存儲(chǔ)部10的數(shù)據(jù)訪(fǎng)問(wèn)。即,數(shù)據(jù)庫(kù)管理部20只需要將索引 的數(shù)據(jù)內(nèi)容(例如索引相關(guān)元數(shù)據(jù)136)識(shí)別為固定長(zhǎng)度的字節(jié)串,而不需要考慮或處理該 數(shù)據(jù)內(nèi)容。此外,響應(yīng)于從用戶(hù)接收到指令,數(shù)據(jù)庫(kù)管理部20使用元表13中的索引相關(guān)元數(shù) 據(jù)來(lái)搜索與該指令相關(guān)聯(lián)(適于該指令)的索引技術(shù),并令索引部30完成一個(gè)執(zhí)行該指令 的過(guò)程。[1.1.3.索引部]索引部30對(duì)應(yīng)于根據(jù)本發(fā)明的索引裝置(或索引單元),其功能是創(chuàng)建索引相關(guān) 元數(shù)據(jù)并使用索弓I相關(guān)元數(shù)據(jù)進(jìn)行搜索。下面列舉索引部30執(zhí)行的過(guò)程的具體例子。(1)創(chuàng)建該過(guò)程被調(diào)用以創(chuàng)建數(shù)據(jù)庫(kù)的索引。當(dāng)該過(guò)程被調(diào)用時(shí),執(zhí)行返回被創(chuàng)建的索引 的過(guò)程。(2)連接該過(guò)程被調(diào)用以連接到數(shù)據(jù)庫(kù)的索引。當(dāng)該過(guò)程被調(diào)用時(shí),返回連接目的地的索 引。(3)插入(索引,id,點(diǎn))
6
執(zhí)行在索引中插入(id,點(diǎn))的過(guò)程。(4)刪除(索引,id)執(zhí)行從索引刪除id條目的過(guò)程。(5)knnSearch(索引,查詢(xún),k, eps)這是執(zhí)行krm搜索的過(guò)程。該過(guò)程的結(jié)果是使用誤差系數(shù)eps來(lái)檢索接近某一 查詢(xún)的k個(gè)點(diǎn)并且返回這k個(gè)點(diǎn)。圖10顯示了執(zhí)行krmSearch的程序的偽碼。(6) searchByID (索引,id)這是返回id點(diǎn)的過(guò)程。⑵ CostKNN(索引)這是估計(jì)和返回kNN搜索成本的過(guò)程。(8) getMetadataLength (維度)索引部30參照點(diǎn)維度返回索引相關(guān)元數(shù)據(jù)的區(qū)域長(zhǎng)度。(9)釋放(索引)這是釋放存儲(chǔ)器上的索引對(duì)象的過(guò)程?;仡^參考圖1,將描述鄰元素搜索設(shè)備1的示例性配置。[1. 1.4.輸入部,輸出部]輸入部40是鍵盤(pán)、指取裝置、觸摸屏等,由用戶(hù)用來(lái)輸入指令或其它信息。例如, 輸入信息包括被指定使用的索引、用于搜索的指定的點(diǎn)(查詢(xún))、用于k鄰元素搜索的元素 數(shù)k。輸出部50是顯示器、打印機(jī)、揚(yáng)聲器等,被用于詢(xún)問(wèn)用戶(hù)或者向用戶(hù)輸出搜索結(jié)^ ο[2.第二實(shí)施方式]本發(fā)明的第二實(shí)施方式是前面描述的、被配置為通過(guò)根據(jù)節(jié)點(diǎn)(單元)的大小改 變修剪度來(lái)執(zhí)行近似鄰元素搜索的鄰元素搜索設(shè)備。傳統(tǒng)的鄰元素搜索技術(shù)認(rèn)為近似系數(shù)相同。然而,大的子樹(shù)(具有大量從屬點(diǎn)的 子樹(shù))和小的子樹(shù)(具有少量從屬點(diǎn)的子樹(shù))在重要性和搜索成本方面是有差別的。也 就是說(shuō),考慮到大的子樹(shù)具有大量從屬點(diǎn),該子樹(shù)很可能包含鄰元素點(diǎn),但因?yàn)樗罅?點(diǎn),所以需要更高的搜索成本。另一方面,考慮到大的子樹(shù)具有大的有界區(qū),該子樹(shù)不太可 能在大的有界區(qū)的特定部分中包含鄰元素點(diǎn)(從屬點(diǎn)可能分布得不均勻)。小的子樹(shù)具有 相反特性。圖11和12是用于解釋大的子樹(shù)作為大的有界區(qū)不太可能包含鄰元素點(diǎn)的示意 圖。在圖11和12中,對(duì)于查詢(xún)點(diǎn)1100存在大的子樹(shù)1101和小的子樹(shù)1102。大的子樹(shù)1101 有兩個(gè)子節(jié)點(diǎn)1107,每個(gè)子節(jié)點(diǎn)1107包含點(diǎn)數(shù)據(jù)1106 (在圖中用黑方塊表示點(diǎn)數(shù)據(jù))。附 圖標(biāo)記1106只被分配給一個(gè)代表性的數(shù)據(jù)點(diǎn),而對(duì)于其余的數(shù)據(jù)點(diǎn)省略。根據(jù)該實(shí)施方式的鄰元素搜索設(shè)備1使用用于大的子樹(shù)的搜索區(qū)1104和用于小 的子樹(shù)的搜索區(qū)1103來(lái)執(zhí)行近似鄰元素搜索。如果距查詢(xún)點(diǎn)1100最近的點(diǎn)位于搜索區(qū)內(nèi), 則包含在子樹(shù)中的點(diǎn)數(shù)據(jù)1106被當(dāng)作近似鄰元素搜索的目標(biāo)點(diǎn)。如果最近的點(diǎn)不位于搜 索區(qū)內(nèi),則子樹(shù)中的點(diǎn)數(shù)據(jù)不被當(dāng)作目標(biāo)(換言之,該子樹(shù)被修剪掉)??傊?,如圖11和12所示,在大的子樹(shù)中點(diǎn)數(shù)據(jù)不是均勻分布的,而是非均勻地分布。當(dāng)搜索區(qū)不包含非均勻分布的點(diǎn)數(shù)據(jù)時(shí),不希望該子樹(shù)被當(dāng)作近似鄰元素搜索的目標(biāo)。 在圖11所示的例子中,用于大的子樹(shù)的搜索區(qū)1103不包含該大子樹(shù)的最近點(diǎn),大的子樹(shù) 1101中的點(diǎn)數(shù)據(jù)不被當(dāng)作目標(biāo)(換言之,該子樹(shù)被修剪掉)。由于大的子樹(shù)1101中的點(diǎn)數(shù) 據(jù)1106遠(yuǎn)離查詢(xún)點(diǎn)1100,所以在該例子中優(yōu)選的是點(diǎn)數(shù)據(jù)1106不被當(dāng)作搜索目標(biāo)。在圖12所示的例子中,與圖11中所示的例子一樣,用于小的子樹(shù)的搜索區(qū)1104 不包含小子樹(shù)的最近點(diǎn),因而小子樹(shù)1102中的點(diǎn)數(shù)據(jù)不被當(dāng)作目標(biāo)。然而,大的子樹(shù)1101 中包含的點(diǎn)數(shù)據(jù)靠近查詢(xún)點(diǎn)1100。在這種情況下,通常優(yōu)選的是將大的子樹(shù)1101中包含的 點(diǎn)數(shù)據(jù)當(dāng)作近似鄰元素搜索的目標(biāo)。然而,基于不常發(fā)生這種情況的判斷,與圖11中所示 的例子一樣,大的子樹(shù)被修剪掉。根據(jù)該實(shí)施方式,通過(guò)改變決定用于大的子樹(shù)1101和小的子樹(shù)1102的搜索區(qū) 1103和1104的大小(半徑)的值,執(zhí)行近似鄰元素搜索。搜索區(qū)被定義為以查詢(xún)點(diǎn)1100 為中心、半徑為r的圓(在多維空間中為超球面)。半徑r根據(jù)下式(表達(dá)式1)來(lái)決定。[表達(dá)式1]r =(搜索過(guò)程中的臨時(shí)k_鄰元素有界區(qū)和查詢(xún)點(diǎn)之間的距離)/(1+ε ‘)圖13是顯示由根據(jù)該實(shí)施方式的鄰元素搜索設(shè)備1(更具體地說(shuō),由其索引部30) 執(zhí)行的近似鄰元素搜索過(guò)程的例子的流程圖。一旦近似鄰元素搜索過(guò)程開(kāi)始,索引部30就獲得查詢(xún)點(diǎn)q、要搜索的點(diǎn)數(shù)k和近似 系數(shù)ε作為用戶(hù)指令信息。指令信息由用戶(hù)通過(guò)輸入部40輸入,被發(fā)送到數(shù)據(jù)庫(kù)管理部 20,然后從數(shù)據(jù)庫(kù)管理部20傳遞給索引部30。索引部30查閱元表13,或更具體地說(shuō)查閱索引相關(guān)元數(shù)據(jù)136,并用N表示根節(jié) 點(diǎn)(Root)(將根節(jié)點(diǎn)存儲(chǔ)為節(jié)點(diǎn)N)(步驟S10)。然后,索引部30按照距查詢(xún)點(diǎn)的距離升序 排列節(jié)點(diǎn)N中的單元,并將結(jié)果存儲(chǔ)為C (步驟S20)。然后,索引部30從結(jié)果C中檢索一個(gè)單元。該單元被表示為Q。此外,索引部30 從結(jié)果C中刪除單元Ctl (步驟S30)。然后,索引部30根據(jù)近似系數(shù)ε計(jì)算ε ‘ (ε ‘被稱(chēng)為修正近似系數(shù),以與近似 系數(shù)ε相區(qū)別)。下式(表達(dá)式2)用于計(jì)算修正近似系數(shù)ε ‘。[表達(dá)式2]
,· ( ,Λ點(diǎn)的從屬點(diǎn)的數(shù)量)、、
‘項(xiàng)傘卿球 碑個(gè)棚從屬點(diǎn)的數(shù)量)))在上式中,Y是常數(shù)(它也可由查詢(xún)給出)。ε ‘滿(mǎn)足以下條件ε' < ε。因此,遠(yuǎn)離最壞情況保證了給定的近似系數(shù) ε不會(huì)發(fā)生。修正近似系數(shù)ε ‘被用于根據(jù)下式(表達(dá)式3)確定搜索區(qū)1103和1104的半徑 r。[表達(dá)式3]r =(當(dāng)前臨時(shí)k_鄰元素有界區(qū)和查詢(xún)點(diǎn)之間的距離)/(1+ ε ‘)然后,索引部30判斷單元Ctl距查詢(xún)點(diǎn)最近的點(diǎn)與查詢(xún)點(diǎn)之間的距離是否小于搜索結(jié)果中的第k點(diǎn)數(shù)據(jù)與查詢(xún)點(diǎn)q之間的距離乘以1/(1+ ε ‘)的乘積(步驟S40)。如果在步驟S40判定單元Ctl距查詢(xún)點(diǎn)最近的點(diǎn)與查詢(xún)點(diǎn)之間的距離小于搜索結(jié) 果中的第k點(diǎn)數(shù)據(jù)與查詢(xún)點(diǎn)q之間的距離乘以1/(1+£ ’ )的乘積(即,如果步驟S40中為 “是”),則索引部30將單元Ctl所指示的節(jié)點(diǎn)指定為新節(jié)點(diǎn)Ν(步驟S50)。然后,索引部30 判斷該新節(jié)點(diǎn)N是否為葉節(jié)點(diǎn)(步驟S60)。如果在步驟S60判定節(jié)點(diǎn)N不是葉節(jié)點(diǎn)(即, 步驟S60中為“否”),則索引部30返回步驟S20中的處理。另一方面,如果在步驟S60中 判定節(jié)點(diǎn)N是葉節(jié)點(diǎn)(即,如果步驟S60中為“是”),則索引部30計(jì)算單元Ctl中的每條點(diǎn) 數(shù)據(jù)與查詢(xún)點(diǎn)q之間的距離,并將前面檢索出的點(diǎn)數(shù)據(jù)中的第k點(diǎn)數(shù)據(jù)替換成比第k點(diǎn)數(shù) 據(jù)更靠近查詢(xún)點(diǎn)的任意點(diǎn)數(shù)據(jù)(步驟S70)。然后,索引部30按照距查詢(xún)點(diǎn)的距離的順序、對(duì)用作鄰元素點(diǎn)數(shù)據(jù)候選的點(diǎn)數(shù)據(jù) 進(jìn)行排序(步驟S80)。然后,索引部30將當(dāng)前節(jié)點(diǎn)N的父節(jié)點(diǎn)再次指定為節(jié)點(diǎn)N,并將父 節(jié)點(diǎn)的單元集合再次指定為C(步驟S90)。然后,索引部30返回前述步驟S30。如果在步驟S40判定單元Ctl距查詢(xún)點(diǎn)最近的點(diǎn)與查詢(xún)點(diǎn)之間的距離不小于搜索 結(jié)果中的第k點(diǎn)數(shù)據(jù)與查詢(xún)點(diǎn)q之間的距離乘以1/(1+£ ’ )的乘積(即,如果步驟S40中 為“否”),則索引部30判斷當(dāng)前節(jié)點(diǎn)N是否為根節(jié)點(diǎn)(步驟S100)。如果判定節(jié)點(diǎn)N是根 節(jié)點(diǎn)(即,如果步驟SlOO中為“是”),那么索引部30結(jié)束近似鄰元素搜索過(guò)程并輸出該時(shí) 刻存儲(chǔ)的第一至第k點(diǎn)數(shù)據(jù)作為近似鄰元素搜索結(jié)果。另一方面,如果判定節(jié)點(diǎn)N不是根 節(jié)點(diǎn)(即,如果步驟SlOO中為“否”),那么索引部30前進(jìn)到上述步驟S90并繼續(xù)近似鄰元 素搜索過(guò)程。這樣就完成了對(duì)根據(jù)該實(shí)施方式的近似鄰元素搜索過(guò)程的例子的描述。圖14顯示了根據(jù)該實(shí)施方式的近似鄰元素搜索結(jié)果和根據(jù)現(xiàn)有技術(shù)的近似鄰元 素搜索結(jié)果之間的對(duì)比。在該圖中,縱軸表示頁(yè)訪(fǎng)問(wèn)率,橫軸表示通過(guò)鄰元素搜索獲得的點(diǎn) 數(shù)據(jù)的匹配率(匹配率1代表完全匹配)。此外,在上述用于計(jì)算修正近似系數(shù)ε ‘的表 達(dá)式中的常數(shù)Y為1和2的情況也進(jìn)行了對(duì)比。從圖14所示的結(jié)果看,證明了對(duì)于相同的頁(yè)訪(fǎng)問(wèn)率,根據(jù)該實(shí)施方式的近似鄰元 素搜索方法的準(zhǔn)確率高于現(xiàn)有技術(shù)的近似鄰元素搜索。本領(lǐng)域的技術(shù)人員容易想到其它優(yōu)點(diǎn)和修改。因此,本發(fā)明廣義上不限于這里所 顯示和描述的代表性實(shí)施方式或具體細(xì)節(jié)。由此,在不偏離由所附權(quán)利要求及其等同物限 定的總體發(fā)明構(gòu)思的精神或范圍的情況下,可以做出多種修改。
權(quán)利要求
一種鄰元素搜索設(shè)備,包括存儲(chǔ)裝置,該存儲(chǔ)裝置存儲(chǔ)元表,該元表包含與每個(gè)索引的數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián)的索引相關(guān)元數(shù)據(jù);數(shù)據(jù)庫(kù)裝置,該數(shù)據(jù)庫(kù)裝置在從用戶(hù)接收到指令時(shí)搜索與該指令相關(guān)聯(lián)的索引,并讓索引裝置使用與該索引相關(guān)聯(lián)的索引相關(guān)元數(shù)據(jù)來(lái)執(zhí)行與該指令相關(guān)聯(lián)的處理;和所述索引裝置,該索引裝置基于來(lái)自所述數(shù)據(jù)庫(kù)裝置的指令,使用所述索引相關(guān)元數(shù)據(jù)來(lái)執(zhí)行與所述指令相關(guān)聯(lián)的處理。
2.一種搜索存在于指定的查詢(xún)點(diǎn)附近的點(diǎn)數(shù)據(jù)的鄰元素搜索設(shè)備,其中,根據(jù)每個(gè)節(jié) 點(diǎn)的從屬點(diǎn)的數(shù)量確定所述查詢(xún)點(diǎn)的搜索區(qū),使得用于具有大量從屬點(diǎn)的節(jié)點(diǎn)的搜索范圍 小于用于具有少量從屬點(diǎn)的節(jié)點(diǎn)的搜索范圍。
3.根據(jù)權(quán)利要求2所述的鄰元素搜索設(shè)備,其中,根據(jù)下式計(jì)算決定搜索區(qū)的半徑r [表達(dá)式1]r =(搜索過(guò)程中的臨時(shí)k-鄰元素有界區(qū)和查詢(xún)點(diǎn)之間的距離)/(1+ε ‘), 其中k是元素?cái)?shù),并且根據(jù)下式計(jì)算在決定半徑r的表達(dá)式中的系數(shù)ε‘ [表達(dá)式2],., /Λ點(diǎn)的從屬點(diǎn)的數(shù)量)、、£ ■傘’(整個(gè)樹(shù)的從屬點(diǎn)的數(shù)量))),其中,Y和ε分別代表任意常數(shù)。
全文摘要
本發(fā)明涉及一種鄰元素搜索設(shè)備,它可選擇適于每個(gè)搜索目標(biāo)的索引。鄰元素搜索設(shè)備具有存儲(chǔ)部,它存儲(chǔ)包含與每個(gè)索引的數(shù)據(jù)結(jié)構(gòu)相關(guān)聯(lián)的索引相關(guān)元數(shù)據(jù)的元表;數(shù)據(jù)庫(kù)管理部,它在從用戶(hù)接收到指令時(shí)搜索與該指令相關(guān)聯(lián)的索引,并讓索引部使用與該索引相關(guān)聯(lián)的索引相關(guān)元數(shù)據(jù)來(lái)執(zhí)行與該指令相關(guān)聯(lián)的處理;和索引部,它基于來(lái)自數(shù)據(jù)庫(kù)管理部的指令,使用索引相關(guān)元數(shù)據(jù)來(lái)執(zhí)行與所述指令相關(guān)聯(lián)的處理。
文檔編號(hào)G06F17/30GK101901246SQ201010129969
公開(kāi)日2010年12月1日 申請(qǐng)日期2010年3月9日 優(yōu)先權(quán)日2009年5月28日
發(fā)明者大音真由美, 平野裕, 金松基孝, 鹿山俊洋 申請(qǐng)人:株式會(huì)社東芝