路網(wǎng)中面向集合的空間關(guān)鍵詞查詢方法
【專利摘要】路網(wǎng)中面向集合的空間關(guān)鍵詞查詢方法,屬于空間關(guān)鍵詞查詢技術(shù)領(lǐng)域。本發(fā)明的提出是為了實現(xiàn)對于用戶的提出的空間關(guān)鍵詞查詢能夠快速返回多條最佳路線供用戶選擇。技術(shù)要點:本發(fā)明所提出的路網(wǎng)中面向集合受查詢方向約束的空間關(guān)鍵詞查詢給出了兩種情況,即面向無主關(guān)鍵詞的查詢和主關(guān)鍵詞優(yōu)先的查詢。無主關(guān)鍵詞的查詢即從查詢點出發(fā)按照道路網(wǎng)在可查詢范圍內(nèi)擴展查詢。主關(guān)鍵詞優(yōu)先的查詢,首先在可查詢范圍內(nèi)以一種迭代替換的方式進(jìn)行擴展查詢直到查詢到主關(guān)鍵詞對象,若還有關(guān)鍵詞沒有被已查詢到的空間對象所覆蓋,則以面向無主關(guān)鍵詞的查詢方式繼續(xù)進(jìn)行擴展查詢。分別對以上兩種查詢進(jìn)行了實驗,證明了所提方法的有效性。
【專利說明】
路網(wǎng)中面向集合的空間關(guān)鍵詞查詢方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及一種路網(wǎng)中面向集合的空間關(guān)鍵詞查詢方法,屬于空間關(guān)鍵詞查詢技 術(shù)領(lǐng)域。
【背景技術(shù)】
[0002] 如今,定位技術(shù)的快速發(fā)展使得基于位置的服務(wù)得到了廣大移動用戶的青睞。隨 之而來的,各種擁有定位技術(shù)的移動設(shè)備不斷推陳出新,各種基于位置信息和文本信息的 查詢被提出。為了滿足這樣的查詢,學(xué)術(shù)界對于不同條件的查詢需求分別提出了各種高效 的空間關(guān)鍵詞查詢算法。道路網(wǎng)是人們生活空間的抽象,研究道路網(wǎng)上的空間關(guān)鍵詞查詢 更有實際意義和使用價值。
[0003] 在現(xiàn)有的技術(shù)中,道路網(wǎng)空間關(guān)鍵詞查詢要么是全方位進(jìn)行的,要么是受查詢方 向約束面向單一對象的,而沒有提出過受查詢方向約束面向集合的查詢方法。另外,現(xiàn)有的 技術(shù)中的歐式空間中面向集合查詢結(jié)果的對象之間可能沒路線。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的是提供一種路網(wǎng)中面向集合受查詢方向約束的空間關(guān)鍵詞查詢方 法,以實現(xiàn)對于用戶提出的空間關(guān)鍵詞查詢能夠快速返回多條最佳路線供用戶選擇。
[0005] 本發(fā)明為解決上述技術(shù)問題采取的技術(shù)方案是:
[0006] 技術(shù)方案一:一種路網(wǎng)中面向集合的空間關(guān)鍵詞查詢方法,所述方法為路網(wǎng)中面 向集合受查詢方向約束的無主關(guān)鍵詞的空間關(guān)鍵詞查詢,其實現(xiàn)過程為:
[0007] 步驟一、給定一個空間關(guān)鍵詞查詢q={(X,y);[α,β];(k1,k 2,...,kn);k,r},查詢 返回k組空間對象,每組對象在一條滿足方向約束和范圍約束的線路上,且這k組的評分函 數(shù)值是所有滿足查詢要求的查詢結(jié)果集中最小的k個;
[0008] 步驟二、根據(jù)Cost函數(shù)的定義,知道路網(wǎng)中面向集合受查詢方向約束的無主關(guān)鍵 詞的空間關(guān)鍵詞查詢查找的一組結(jié)果是在一條路線上,假設(shè)路線上滿足查詢條件的一組空 間對象為( 〇1,〇2, . . .,〇n),該條路線的評分函數(shù)在此定義為:
[0010] 在公式(2-1)中,sp(q,〇1)表示查詢點q與空間對象〇1之間在路網(wǎng)中的最短路徑,sp (〇1,〇1+1)(l<i<n)表示空間對象〇1和 〇1+1之間在路網(wǎng)中的最短路徑,公式中除以r是為了歸 一化評分,其中r是允許查詢的最長路徑長度;
[0011]步驟三、為了實現(xiàn)查詢,首先需要定義一個數(shù)據(jù)結(jié)構(gòu),記錄查詢已經(jīng)遍歷到的路線 及空間對象、剩余未被覆蓋的查詢關(guān)鍵詞和已經(jīng)遍歷的最短路徑長度,偽碼如下所示:
[0013] 上述代碼中,〇1是一個列表,用來存儲查詢已經(jīng)遍歷到的滿足查詢條件的空間對 象及其路線上的邊的頂點,kl是用來存儲還未被覆蓋的查詢關(guān)鍵詞的列表,spl是用來記錄 查詢已經(jīng)遍歷的最短路徑長度;
[0014] 步驟四、查詢過程為:
[0015] 給出一個查詢q,會給出查詢點的位置(q. X,q. y),查詢所面向的方向角[α,β],查 詢關(guān)鍵詞集q. Κ,查詢的路徑長度約束r,查詢結(jié)果數(shù)據(jù)集個數(shù)k;
[0016] 步驟四(一)、首先初始化一個隊列U和一個列表L;U用來存儲每條遍歷路線,每條 路線需要存儲的信息即為上述定義的一個結(jié)構(gòu)體entry,在此稱為一條記錄,entry的〇1記 錄當(dāng)前已遍歷到的點,〇 1包括查詢點q、滿足查詢條件的空間對象和邊的頂點;且所述當(dāng)前 已遍歷到的點按遍歷順序存儲,entry的kl記錄目前還沒被已查詢的空間對象所覆蓋的查 詢關(guān)鍵詞,entry的spl記錄目前已遍歷到的點所在路線的最短路徑長度;L用來存儲滿足查 詢條件的記錄,在每條記錄中,〇1列表中的一組空間對象共同覆蓋查詢關(guān)鍵詞且所有對象 所在的路線在查詢方向角內(nèi),kl為空表明所有要查詢的關(guān)鍵詞已被查詢到的空間對象所覆 蓋,spl的值小于路徑長度約束r的值;
[0017] 步驟四(二)、然后,創(chuàng)建一條記錄,分三步進(jìn)行處理查詢點所在的邊及邊上的對 象,第一步,通過利用路網(wǎng)中局域網(wǎng)IR樹能夠定位到(9^,9.7)所在的邊6^把9加入6111^7 的〇1列表中,查詢關(guān)鍵詞加入到entry的kl列表中,entry的spl初始化為0;第二步,判斷頂 點^和^是否在查詢方向角內(nèi),假設(shè)W在方向角內(nèi),則檢查從q到巧的路段上是否包含滿足 查詢條件的空間對象,若存在滿足查詢條件的空間對象,則把相應(yīng)的空間對象添加到entry 的〇1列表中,把相應(yīng)的關(guān)鍵詞從entry的kl列表中刪除,把entry的spl相應(yīng)的增加,否則,把 頂點vj加入到entry的〇1列表中即可,對于頂點Vi以同樣的方法進(jìn)行處理;第三步,若entry 的kl不為空,說明存在關(guān)鍵詞沒有被空間對象覆蓋,則把頂點加入到entry的〇1列表中, 相應(yīng)地更新entry的spl,把記錄添加到隊列U中,否則說明查詢關(guān)鍵詞已被全部覆蓋,判斷 此條記錄的spl是否小于r,若是,則把此條記錄加入L,否則放棄此條記錄;
[0018] 步驟四(三)、最后,進(jìn)行擴展遍歷的搜索:
[0019] 通過從U中讀取并刪除一條條記錄,并且檢查每條記錄entry的〇1列表中最后一個 元素(即已遍歷到的最近的頂點)的鄰接表,若鄰接表中有多個鄰接點,則為每一鄰接點分 支建立一條虛擬記錄,然后核查每個新記錄對應(yīng)的鄰接邊并更新虛擬記錄,核查更新后的 虛擬記錄,如果不滿足查詢條件則刪除對應(yīng)的該虛擬記錄,然后為未終止的路線創(chuàng)建一條 新記錄并添加到U中;
[0020] 循環(huán)地遍歷U直到隊列U為空,循環(huán)地遍歷隊列U,能夠從(q.X,q.y)開始,遍歷完方 向角[α,β]約束及路徑長度約束q.r內(nèi)的所有邊,采用驗證邊相同的方式來查找滿足查 詢條件的空間對象;在整個搜索過程中,以一種擴展的方式進(jìn)行遍歷查詢;搜索過程中,如 果頂點Vx不是局域網(wǎng)的邊界點,則像上面處理頂點巧一樣處理Vx,先是驗證目前頂點到Vx的 路段上是否包含滿足查詢條件的空間對象,然后相應(yīng)的更新此條查詢路線的〇1列表,kl列 表及spl的值;否則,頂點vx的層次樹;將會被遍歷;頂點v x的層次樹&將會被遍歷的過程如 下:
[0021]首先,檢查?;根結(jié)點的倒排文件,看看是否包含有可能滿足查詢條件的空間對象。 如果不包含有可能滿足查詢條件的空間對象,可以通過短割跳過整個局域網(wǎng),而不進(jìn)行其 內(nèi)部邊的核查;否則,進(jìn)一步的核查它的孩子結(jié)點來檢索渴望查詢到的空間對象;
[0022]當(dāng)隊列U為空時,說明對路網(wǎng)的查詢已經(jīng)結(jié)束,從結(jié)果列表L中獲取要查詢的k組空 間對象:首先判斷一下L中的記錄個數(shù),如果記錄的個數(shù)小于等于k,則返回L中的所有記錄, 否則,根據(jù)記錄的spl值返回列表L中最小的的k條記錄;每條記錄中的〇1列表即為滿足查詢 輸入的一條路線,存有滿足查詢輸入的一組空間對象。
[0023]在步驟四(三)中,不滿足查詢條件則刪除對應(yīng)的該虛擬記錄即為當(dāng)從隊列U中取 出一條記錄進(jìn)行擴展查詢時終止一條遍歷路線,終止一條遍歷路線分以下情況:
[0024] 一,遍歷到某頂點時,檢測該頂點是否在該記錄中已經(jīng)遍歷過,如該頂點在該記錄 已經(jīng)遍歷過,則檢查記錄的〇1中最后一個頂點與該頂點間路線上的空間對象,記住滿足查 詢條件的空間對象,然后檢查這些空間對象是否覆蓋了 kl中的所有關(guān)鍵詞且若更新了 spl 其是否仍小于等于q的r,若是,則此條路線是要查詢的路線,創(chuàng)建一個與此條路線相對應(yīng)的 新記錄,把此條記錄添加到L中,否則,不創(chuàng)建新的記錄,放棄此路線的搜索;
[0025]二,若下一條要遍歷的邊與方向角邊界線相交,則首先求出相應(yīng)的交點,然后檢查 記錄的〇1中最后一個頂點到交點的路段上的空間對象,記住滿足查詢條件的空間對象,然 后檢查這些空間對象是否覆蓋了 kl中的所有關(guān)鍵詞且若更新了 spl其是否仍小于等于q的 r,若是,則此條路線是要查詢的路線,創(chuàng)建一個與此條路線相對應(yīng)的新記錄,把此條記錄添 加到L中,否則,不創(chuàng)建新的記錄,放棄此路線的搜索;
[0026]三,若搜索到達(dá)了某個空間對象時,此時的spl大于了q的r且當(dāng)前記錄的kl中的關(guān) 鍵詞沒有被完全覆蓋或者遍歷到到達(dá)了某個空間對象時恰好當(dāng)前記錄的kl中的關(guān)鍵詞完 全被覆蓋,但是此時的spl正好大于了q的r,則說明搜索已經(jīng)擴展到了規(guī)定的范圍外,需要 終止此條路線的搜索;
[0027] 四,若搜索到達(dá)了兩個局域網(wǎng)的邊界點,通過邊界點的索引樹知道下一個局域網(wǎng) 不包含渴望查詢到的空間對象,且記錄的spl加上下一個局域網(wǎng)的短割大于了 q的r,記錄的 kl非空,則說明此條查詢路線不可能滿足查詢要求,若越過一個局域網(wǎng)去查詢另外一個局 域網(wǎng)絕對超出了查詢的距離約束范圍r,需要終止此條路線的搜索;
[0028] 五,若查詢遍歷完某個空間對象時,當(dāng)前記錄的kl中關(guān)鍵詞完全被覆蓋且此時的 spl小于等于q的r,則說明到此為止,此條查詢路線已經(jīng)滿足的查詢要求,此條路線上存在 一組空間對象聯(lián)合起來共同滿足所輸入查詢的關(guān)鍵詞,此時應(yīng)該終止此條路線的擴展,創(chuàng) 建一條相應(yīng)的新記錄或者更新當(dāng)前的記錄添加到L中。
[0029] 在步驟四(二)中,所述局域網(wǎng)IR樹用倒排文件對R樹的擴展,局域網(wǎng)IR樹中的每一 個葉子結(jié)點對應(yīng)道路網(wǎng)中最下層的一個局域網(wǎng),此最下層的局域網(wǎng)中的每一個邊都有一個 詳細(xì)的描述此邊的多段線組成,每一個多段線都被存儲到多段線文件中,并且,在局域網(wǎng)IR 樹的葉子節(jié)點上還有另外一個指針,指向包含此局域網(wǎng)內(nèi)所有邊的多段線信息的多段線文 件;在局域網(wǎng)IR樹中每一個非葉子結(jié)點包含一條形式為(cp,rect,cp. id)的記錄,其中cp是 局域網(wǎng)孩子結(jié)點的id,rect表示局域網(wǎng)的最小外接矩形,cp. id表示一個包含所有孩子結(jié)點 文本信息的倒排列表的id。
[0030] 在步驟四(二)中,利用路網(wǎng)中局域網(wǎng)IR樹能夠定位到(q. X,q. y)所在的邊ei, j,需 要以下兩個步驟:1)在局域網(wǎng)IR樹上執(zhí)行一個點位置查詢查找所有包含查詢位置的最小外 接矩形(最底層局域網(wǎng));2)執(zhí)行一次過濾程序選擇精確的多段線。
[0031] 這里所述局域網(wǎng)IR樹如圖3.3所示,為了能夠快速地找到用戶提交的任意一個查 詢位置所在的邊,以及使用歐幾里得啟發(fā)式算法能夠快速找出包含滿足查詢條件的空間對 象的局域網(wǎng),本發(fā)明把不同層次的所有局域網(wǎng)組織成一個變體IR樹,即局域網(wǎng)IR樹。和一般 的IR樹類似,本質(zhì)上都是用倒排文件對R樹的擴展,不同的是,在局域網(wǎng)IR樹中,每一個葉子 結(jié)點對應(yīng)道路網(wǎng)中最下層的一個局域網(wǎng),此最下層的局域網(wǎng)中的每一個路段(邊)都有一個 詳細(xì)的描述此路段(邊)的多段線組成,每一個多段線都被存儲到多段線文件中,下表1顯示 了多段線文件的格式。并且,在局域網(wǎng)IR樹的葉子節(jié)點上還有另外一個指針,指向包含此局 域網(wǎng)內(nèi)所有邊的多段線信息的多段線文件。在局域網(wǎng)IR樹中,每一個非葉子結(jié)點包含一條 形式為(cp,rect,cp. id)的記錄,其中cp是局域網(wǎng)孩子結(jié)點的id,rect表示局域網(wǎng)的最小外 接矩形,cp. id表示一個包含所有孩子結(jié)點文本信息的倒排列表的id。查詢的時候,定位查 詢點所在的邊需要兩個步驟:1)在局域網(wǎng)IR樹上執(zhí)行一個點位置查詢查找所有包含查詢位 置的最小外接矩形(最底層局域網(wǎng));2)執(zhí)行一次過濾程序選擇精確的多段線;另外,通過倒 排列表能夠快速地找到此結(jié)點的哪些孩子結(jié)點包含了所要查詢的空間對象,最終能夠確定 在道路中哪些子區(qū)域進(jìn)行詳細(xì)的空間關(guān)鍵詞查詢。這個過程中,允許查找查詢位置所在的 邊,并從這個邊的終點開始一個路網(wǎng)擴展查詢。
[0032] 表 1
[0033] Polyline file
[0035] 技術(shù)方案二:一種路網(wǎng)中面向集合的空間關(guān)鍵詞查詢方法,所述方法為路網(wǎng)中面 向集合受查詢方向約束的主關(guān)鍵詞優(yōu)先的空間關(guān)鍵詞查詢,其實現(xiàn)過程為:
[0036] 步驟一、給定一個空間關(guān)鍵詞查詢q=<(q.x,q.y); [α,β]; {ko,ki,k2, · · .kn} ;k,r >,查詢返回k組空間對象,每組的對象在一條滿足方向約束和范圍約束的線路上,且此k組 的評分函數(shù)值是所有滿足查詢要求的查詢結(jié)果集中最小的k個;
[0037] 步驟二、根據(jù)Cost函數(shù)的定義,知道路網(wǎng)中面向集合和方向的主關(guān)鍵詞優(yōu)先的空 間關(guān)鍵詞查詢查找的一組結(jié)果是在一條路線上,假設(shè)路線上滿足查詢條件的一組空間對象 為(〇〇, 〇1,〇2, . . .,〇n),而對象〇k(0<k<n)包含主查詢關(guān)鍵詞ko,這條路線的評分函數(shù)在此 定義為:
[0039] 在公式(2-2)中,Sp(q,〇Q)表示查詢點q與空間對象〇〇之間在路網(wǎng)中的最短路徑,sp (〇1,〇1+1)(l<i<n)表示空間對象〇1和 〇1+1之間在路網(wǎng)中的最短路徑,公式中除以r是為了歸 一化評分,其中r是允許查詢的最長路徑長度;
[0040] 步驟三、定義一個數(shù)據(jù)結(jié)構(gòu),記錄查詢已經(jīng)遍歷到的路線及空間對象、剩余未被覆 蓋的查詢關(guān)鍵詞、已經(jīng)被覆蓋的查詢關(guān)鍵詞和已經(jīng)遍歷的最短路徑長度,偽碼如下所示:
[0042]上述代碼中,〇1是一個列表,用來存儲查詢已經(jīng)遍歷到的滿足查詢條件的空間對 象及其路線上的邊的頂點,kl是用來存儲還未被覆蓋的查詢關(guān)鍵詞的列表,cvl是用來存儲 已經(jīng)被覆蓋的查詢關(guān)鍵詞的列表,spl是用來記錄查詢點q到主關(guān)鍵詞對象之間的最短路徑 長度加上已經(jīng)查詢到的空間對象所在路線的最短路徑長度之和;如果還沒有查找到主關(guān)鍵 詞對象,則記錄查詢點q與目前路線已到達(dá)的頂點之間的最短路徑長度;
[0043] 步驟四、查詢過程為:
[0044] 給出一個查詢q,用戶提交的查詢q會給出查詢點的位置(q. X,q. y),查詢所面向的 方向角[α,β],查詢關(guān)鍵詞集q.K,查詢的路徑長度約束r,查詢結(jié)果數(shù)據(jù)集個數(shù)k;
[0045] 以迭代替換的方式進(jìn)行擴展查詢直到查詢到主關(guān)鍵詞對象,所述迭代替換為:如 果當(dāng)前遍歷到的空間對象包含的某個關(guān)鍵詞在之前已經(jīng)有空間對象覆蓋,則把之前的空間 對象從〇1列表中刪除,如果刪除之后列表的頭元素是邊的頂點,則把頂點刪除直到列表的 頭元素為空間對象,之后把當(dāng)前遍歷到空間對象添加到〇1列表的后面;然后,若還有關(guān)鍵詞 沒有被已查詢到的空間對象所覆蓋,則以面向無主關(guān)鍵詞的查詢方式繼續(xù)進(jìn)行擴展查詢。
[0046] 本發(fā)明的有益效果是:
[0047] 本發(fā)明基于道路網(wǎng)提出了面向集合受查詢方向約束的空間關(guān)鍵詞查詢方法,包括 面向無主關(guān)鍵詞的查詢和主關(guān)鍵詞優(yōu)先的查詢。無主關(guān)鍵詞的查詢即從查詢點出發(fā)按照道 路網(wǎng)在可查詢范圍內(nèi)擴展查詢。主關(guān)鍵詞優(yōu)先的查詢,首先在可查詢范圍內(nèi)以一種迭代替 換的方式進(jìn)行擴展查詢直到查詢到主關(guān)鍵詞對象,若還有關(guān)鍵詞沒有被已查詢到的空間對 象所覆蓋,則以面向無主關(guān)鍵詞的查詢方式繼續(xù)進(jìn)行擴展查詢。本發(fā)明對這兩種查詢分別 給出了查詢算法。最后,分別對以上兩種查詢進(jìn)行了實驗,證明了所提算法的有效性。
【附圖說明】
[0048]圖1是本發(fā)明的查詢結(jié)構(gòu)示意圖;圖2是局域網(wǎng)IR樹的原理示意圖(圖中的英文 Polyline file為多段線文件);
[0049]圖3是針對本發(fā)明方法的實驗結(jié)果圖,包括圖3.1~3.9;
[0050] 圖3.1表示不同查詢方向角下查詢的響應(yīng)時間圖,圖3.2表示不同查詢距離約束下 的響應(yīng)時間圖,圖3.3表示不同查詢關(guān)鍵詞個數(shù)對響應(yīng)時間的影響圖,圖3.4表示不同數(shù)據(jù) 集下查詢的響應(yīng)時間圖,圖3.5表示不同數(shù)據(jù)集下查詢擴展的邊數(shù)圖,圖3.6表示不同分割 方法下面向無主關(guān)鍵詞查詢的響應(yīng)時間圖,圖3.7表示不同分割方法下面向無主關(guān)鍵詞查 詢擴展的邊數(shù)圖,圖3.8表示不同分割方法下面向主關(guān)鍵詞優(yōu)先查詢的響應(yīng)時間圖,圖3.9 表示不同分割方法下面向主關(guān)鍵詞優(yōu)先查詢擴展的邊數(shù)圖。
【具體實施方式】
【具體實施方式】 [0051] 一:結(jié)合圖1詳細(xì)說明本實施方式所述的路網(wǎng)中面向集合的空間關(guān) 鍵詞查詢方法:
[0052] 1、針對路網(wǎng)中面向集合的空間關(guān)鍵詞查詢方法中的提到相關(guān)參數(shù)進(jìn)行定義如下:
[0053] -個道路網(wǎng)被表示為一個無向圖G=(V,E),其中V和E分別表示道路網(wǎng)中的頂點集 和邊集。每一個頂點v(eV)表示一個道路的交叉口或者一條道路的終點;每條邊eu(eE,i 乒j)表示連接頂點%和%的路段,其長度表示為|eu|。兩個頂點之間的距離dis(U,v) 表示這兩個點之間的最短路徑。
[0054] 定義1 · 1空間對象:對于一個空間對象集Ρ0Ι = (〇1,〇2, · · ·,on),〇i = (1,e,d,K) (i =1,2, . . .,n),其中〇i. 1表示〇i的空間位置,〇i.e表示〇i所在的邊,〇i.d表示〇i. 1到〇i.e起始 點的距離,〇1.K是描述〇1詳細(xì)信息的一組關(guān)鍵詞。
[0055] 定義1.2用戶查詢:用戶提交的查詢q會給出查詢點的位置(q.x,q.y),查詢所面向 的方向角[α,β],查詢關(guān)鍵詞集q.K,查詢的路徑長度約束r,查詢結(jié)果數(shù)據(jù)集個數(shù)k。
[0056] 定義1.3主關(guān)鍵詞:查詢關(guān)鍵詞集q.K中的關(guān)鍵詞ko。
[0057] 定義1.4主關(guān)鍵詞對象:包含主關(guān)鍵詞ko的對象。
[0058] 定義1.5Cost函數(shù):給定一個查詢q和一個空間對象集Ρ0Ι,其Cost函數(shù)為Cost(q, Ρ0Ι) = SP,SP為滿足查詢條件的空間對象集所在的一條最短路徑的長度。
[0059] 定義1.6方向角邊界線:從查詢點發(fā)出的兩條射線,如圖1中的兩條射線1#P12,與 橫軸分別成α和β度角。
[0060] 定義1.7方向角內(nèi)的點:對于路網(wǎng)中的頂點ν(或者對象〇),若ν(或者〇)與查詢點q 連線的方向角9v,q(或者Θ。,。)滿足α<θν>(1<β(或者,則稱頂點 v(或者對象〇)是方 向角內(nèi)的點,或者說頂點ν(或者對象〇)在方向角內(nèi)。
[0061] 定義1.8方向角邊界線與路網(wǎng)中邊的交點:如圖1所示,Α為方向邊界線12與邊e8,9 的交點。
[0062] 由于知道方向邊界線h的方向角為β和查詢點q的坐標(biāo)(9.1^.7),由此可以求出12 所對應(yīng)的直線方程為
[0063] y = tanP(χ-q.x)+q.y (1-1)
[0064] 又知道頂點vs和V9的坐標(biāo)分別為(V8.x,V8.y)和(V9.x,V9.y),則可以求出邊e8,9所 對應(yīng)的直線方程為
[0066] 聯(lián)立方程1-1和方程1-2,能夠求出A的坐標(biāo)(XA,yA)。
[0067] 2、分別給出兩種路網(wǎng)中面向集合的空間關(guān)鍵詞查詢方法:
[0068] 針對所提出的路網(wǎng)中面向集合受查詢方向約束的空間關(guān)鍵詞查詢給出了兩種情 況,即面向無主關(guān)鍵詞的查詢和主關(guān)鍵詞優(yōu)先的查詢,并陳述了這兩種查詢的算法詳細(xì)的 描述。
[0069] 2.1面向無主關(guān)鍵詞的查詢方法
[0070] 2.1.1算法思想
[0071] 定義2.1路網(wǎng)中面向集合受查詢方向約束的無主關(guān)鍵詞的空間關(guān)鍵詞查詢:給定 一個空間關(guān)鍵詞查詢q= {(x,y); [α,β]; (ki,k2, . . .,kn) ;k,r},查詢返回k組空間對象,每組 對象在一條滿足方向約束和范圍約束的線路上,且這k組的評分函數(shù)值是所有滿足查詢要 求的查詢結(jié)果集中最小的k個。
[0072] 根據(jù)Cost函數(shù)的定義,知道路網(wǎng)中面向集合受查詢方向約束的無主關(guān)鍵詞的空間 關(guān)鍵詞查詢查找的一組結(jié)果是在一條路線上,假設(shè)路線上滿足查詢條件的一組空間對象為 ( 〇1,〇2,. . .,〇n),這條路線的評分函數(shù)在此定義為:
[0074] 在公式(2-1)中,sp(q,〇1)表示查詢點q與空間對象〇1之間在路網(wǎng)中的最短路徑,sp (〇1,〇1+1)(l<i<n)表示空間對象〇1和 〇1+1之間在路網(wǎng)中的最短路徑,公式中除以r是為了歸 一化評分,其中r是允許查詢的最長路徑長度。
[0075] 為了實現(xiàn)查詢,首先需要定義一個數(shù)據(jù)結(jié)構(gòu),記錄查詢已經(jīng)遍歷到的路線及空間 對象、剩余未被覆蓋的查詢關(guān)鍵詞和已經(jīng)遍歷的最短路徑長度,偽碼如下所示。
[0077]上述代碼中,ο 1是一個列表,用來存儲查詢已經(jīng)遍歷到的滿足查詢條件的空間對 象及其路線上的邊的頂點,kl是用來存儲還未被覆蓋的查詢關(guān)鍵詞的列表,spl是用來記錄 查詢已經(jīng)遍歷的最短路徑長度。
[0078]給出一個查詢q,首先初始化一個隊列U和一個列表LW用來存儲每條遍歷路線,每 條路線需要存儲的信息即為上述定義的一個結(jié)構(gòu)體entry,在此稱為一條記錄,entry的〇1 記錄當(dāng)前已遍歷到的點(包括查詢點q,滿足查詢條件的空間對象和邊的頂點)且這些點按 遍歷順序存儲,entry的kl記錄目前還沒被已查詢的空間對象所覆蓋的查詢關(guān)鍵詞,entry 的spl記錄目前已遍歷到的點所在路線的最短路徑長度。L用來存儲滿足查詢條件的記錄, 在每條記錄中,〇1列表中的一組空間對象共同覆蓋查詢關(guān)鍵詞且所有對象所在的路線在查 詢方向角內(nèi),kl為空,表明所有要查詢的關(guān)鍵詞已被查詢到的空間對象所覆蓋,spl的值小 于路徑長度約束r的值。
[0079]然后,創(chuàng)建一條記錄,分三步進(jìn)行處理查詢點所在的邊及邊上的對象,第一步,通 過利用路網(wǎng)中邊的索引if樹能夠定位到(q · X,q · y)所在的邊ei, j,把q加入entry的ο 1列表 中,查詢關(guān)鍵詞加入到entry的kl列表中,entry的spl初始化為0;第二步,判斷頂點Vi和vj是 否在查詢方向角內(nèi),假設(shè)W在方向角內(nèi),則檢查從q到W的路段上是否包含滿足查詢條件的 空間對象,若存在滿足查詢條件的空間對象,則把相應(yīng)的空間對象添加到entry的ο 1列表 中,把相應(yīng)的關(guān)鍵詞從entry的k 1列表中刪除,把entry的sp 1相應(yīng)的增加,否則,把頂點vj加 入到entry的ol列表中即可,對于頂點Vi以同樣的方法進(jìn)行處理;第三步,若entry的kl不為 空,說明存在關(guān)鍵詞沒有被空間對象覆蓋,則把頂點vj加入到entry的ο 1列表中,相應(yīng)地更 新entry的spl,把記錄添加到隊列U中,否則說明查詢關(guān)鍵詞已被全部覆蓋,判斷此條記錄 的spl是否小于r,若是,則把此條記錄加入L,否則放棄它。
[0080]最后,通過從U中讀取并刪除一條條記錄,并且檢查每條記錄entry的〇1列表中最 后一個元素(即已遍歷到的最近的頂點)的鄰接表,若鄰接表中有多個鄰接點,則為每一鄰 接點分支建立一條虛擬記錄,然后核查每個新記錄對應(yīng)的鄰接邊并更新虛擬記錄,然后為 未終止的路線創(chuàng)建一條新記錄并添加到U中,像這樣循環(huán)地遍歷U直到隊列U為空。循環(huán)地遍 歷隊列U,能夠從(9.1,9.7)開始,遍歷完方向角|>,0]約束及路徑長度約束9.1'內(nèi)的所有邊, 像驗證邊-樣的方式來查找滿足查詢條件的空間對象。在整個搜索過程中,以一種擴展 的方式進(jìn)行遍歷查詢。搜索過程中,如果頂點v x不是局域網(wǎng)的邊界點,則像上面處理頂點 一樣處理vx,先是驗證目前頂點到vx的路段上是否包含滿足查詢條件的空間對象,然后相應(yīng) 的更新此條查詢路線的〇1列表,kl列表及spl的值;否則,頂點v x的層次樹&將會被遍歷。首 先,檢查?;根結(jié)點的倒排文件,看看是否包含有可能滿足查詢條件的空間對象。如果不包含 有可能滿足查詢條件的空間對象,可以通過短割跳過整個局域網(wǎng),而不進(jìn)行其內(nèi)部邊的核 查;否則,進(jìn)一步的核查它的孩子結(jié)點來檢索渴望查詢到的空間對象。
[0081] 當(dāng)隊列U為空時,說明對路網(wǎng)的查詢已經(jīng)結(jié)束,此時,應(yīng)該考慮如何從結(jié)果列表L中 獲取要查詢的k組空間對象。首先判斷一下L中的記錄個數(shù),如果記錄的個數(shù)小于等于k,則 返回L中的所有記錄,否則,根據(jù)記錄的spl值返回列表L中最小的的k條記錄。每條記錄中的 〇1列表即為滿足查詢輸入的一條路線,存有滿足查詢輸入的一組空間對象。
[0082] 整個擴展遍歷的搜索過程中,需要終止一些不可能滿足查詢要求的路線。當(dāng)從隊 列U中取出一條記錄進(jìn)行擴展查詢時,終止一條遍歷路線分多種情況,一,遍歷到某頂點時, 檢測該頂點是否在該記錄中已經(jīng)遍歷過,如該頂點在該記錄已經(jīng)遍歷過,則檢查記錄的〇1 中最后一個頂點與該頂點間路線上的空間對象,記住滿足查詢條件的空間對象,然后檢查 這些空間對象是否覆蓋了 kl中的所有關(guān)鍵詞且若更新了 spl其是否仍小于等于q的r,若是, 則此條路線是要查詢的路線,創(chuàng)建一個與此條路線相對應(yīng)的新記錄,把此條記錄添加到L 中,否則,不創(chuàng)建新的記錄,放棄此路線的搜索;二,若下一條要遍歷的邊與方向角邊界線相 交,則首先求出相應(yīng)的交點,然后檢查記錄的〇1中最后一個頂點到交點的路段上的空間對 象,記住滿足查詢條件的空間對象,然后檢查這些空間對象是否覆蓋了 kl中的所有關(guān)鍵詞 且若更新了 spl其是否仍小于等于q的r,若是,則此條路線是要查詢的路線,創(chuàng)建一個與此 條路線相對應(yīng)的新記錄,把此條記錄添加到L中,否則,不創(chuàng)建新的記錄,放棄此路線的搜 索;三,若搜索到達(dá)了某個空間對象時,此時的spl大于了 q的r且當(dāng)前記錄的kl中的關(guān)鍵詞 沒有被完全覆蓋或者遍歷到到達(dá)了某個空間對象時恰好當(dāng)前記錄的kl中的關(guān)鍵詞完全被 覆蓋,但是此時的spl正好大于了q的r,則說明搜索已經(jīng)擴展到了規(guī)定的范圍外,需要終止 此條路線的搜索;四,若搜索到達(dá)了兩個局域網(wǎng)的邊界點,通過邊界點的索引樹知道下一個 局域網(wǎng)不包含渴望查詢到的空間對象,且記錄的spl加上下一個局域網(wǎng)的短割大于了 q的r, 記錄的kl非空,則說明此條查詢路線不可能滿足查詢要求,若越過一個局域網(wǎng)去查詢另外 一個局域網(wǎng)絕對超出了查詢的距離約束范圍r,需要終止此條路線的搜索;五,若查詢遍歷 完某個空間對象時,當(dāng)前記錄的kl中關(guān)鍵詞完全被覆蓋且此時的spl小于等于q的r,則說明 到此為止,此條查詢路線已經(jīng)滿足的查詢要求,此條路線上存在一組空間對象聯(lián)合起來共 同滿足所輸入查詢的關(guān)鍵詞,此時應(yīng)該終止此條路線的擴展,創(chuàng)建一條相應(yīng)的新記錄或者 更新當(dāng)前的記錄添加到L中。
[0083] 2.1.2算法描述
[0084] 下面用偽碼給出了上一小節(jié)算法思想的具體描述。
[0085] 算法2.1 :findP0ISet (查找候選集)
[0086] 輸入:9={(叉,7);|>,0];(1^1,1?,...,1^);1^,1·}
[0087]輸出:候選集列表L
[0091]算法2.1進(jìn)行路網(wǎng)中面向集合和方向的無主關(guān)鍵詞的空間關(guān)鍵詞查詢,返回所有 滿足查詢條件的候選結(jié)果集。第1到3行創(chuàng)建了一些存儲對象并進(jìn)行了初始化。第4行,確定 了查詢點q所在的邊。第5到19行檢查了 q到其所在邊上的頂點之間路段上的空間對象。第20 到38行用while循環(huán)不斷的處理非空隊列U中的每條記錄,以擴展的方式實現(xiàn)在路網(wǎng)上面向 集合和方向的空間關(guān)鍵詞查詢。第39行,返回存有候選結(jié)果集的列表L,退出程序。
[0092] 算法2.2:findCandidate (從候選集查找結(jié)果集)
[0093]輸入:算法2.1得到的候選集列表L和用戶輸入的k值 [0094]輸出:從候選集查找到的結(jié)果集RES
[0096]算法4.2實現(xiàn)從算法1得到的候選結(jié)果集中選取spl最小的k個記錄返回給用戶。第 一行,獲取候選結(jié)果集列表的大小。第2到4行,實現(xiàn)若候選結(jié)果集列表的大小小于用戶輸入 的k值,則返回L中的所有記錄。第5行,用排序算法對候選結(jié)果集進(jìn)行排序。第6行,返回排序 后的前k個元素。第7行,返回結(jié)果集RES,退出程序。
[0097] 2.2面向主關(guān)鍵詞優(yōu)先的查詢算法
[0098] 2.2.1算法思想
[0099] 定義2.2路網(wǎng)中面向集合和方向的主關(guān)鍵詞優(yōu)先的空間關(guān)鍵詞查詢:給定一個空 間關(guān)鍵詞查詢q=<(q.x,q.y); [α,β]; {ko,ki,k2, . . .kn} ;k,r>,查詢返回k組空間對象,每 組的對象在一條滿足方向約束和范圍約束的線路上,且此k組的評分函數(shù)值是所有滿足查 詢要求的查詢結(jié)果集中最小的k個。
[0100]根據(jù)Cost函數(shù)的定義,知道路網(wǎng)中面向集合和方向的主關(guān)鍵詞優(yōu)先的空間關(guān)鍵詞 查詢查找的一組結(jié)果是在一條路線上,假設(shè)路線上滿足查詢條件的一組空間對象為(〇〇,〇1, 〇2,. . .,〇n),而對象〇k(0<k<n)包含主查詢關(guān)鍵詞ko,這條路線的評分函數(shù)在此定義為:
[0102] 在公式2-2中,Sp(q,〇Q)表示查詢點q與空間對象〇〇之間在路網(wǎng)中的最短路徑,sp (〇1,〇1+1)(l<i<n)表示空間對象〇1和 〇1+1之間在路網(wǎng)中的最短路徑,公式中除以r是為了歸 一化評分,其中r是允許查詢的最長路徑長度。
[0103] 面向主關(guān)鍵詞優(yōu)先的查詢是在面向無主關(guān)鍵詞查詢的基礎(chǔ)上進(jìn)行的改進(jìn),是為了 滿足一種新的查詢要求而提出的查詢算法。此查詢算法大部分思想及查詢過程和面向無主 關(guān)鍵詞查詢是一樣的,在此不再贅述,接下來給出改進(jìn)的部分。給出一個查詢q,同樣從查詢 點q開始,但是擴展查詢方式不同,路線的評分函數(shù)也不同。在擴展查詢過程中,會以一種迭 代替換的方式進(jìn)行擴展查詢直到查詢到主關(guān)鍵詞對象,這里的迭代替換的意思是,如果當(dāng) 前遍歷到的空間對象包含的某個關(guān)鍵詞在之前已經(jīng)有空間對象覆蓋了,則把之前的空間對 象從〇1列表中刪除,如果刪除之后列表的頭元素是邊的頂點,則把頂點刪除直到列表的頭 元素為空間對象,之后把當(dāng)前遍歷到空間對象添加到〇1列表的后面。然后,若還有關(guān)鍵詞沒 有被已查詢到的空間對象所覆蓋,則以面向無主關(guān)鍵詞的查詢方式繼續(xù)進(jìn)行擴展查詢。如 上面的公式4-4,每條路線的評分函數(shù)主要包含兩部分,第一部分sp(q, 〇k)表示查詢點q到 主關(guān)鍵詞對象〇1<之間的最短路徑長度,第二部分8口(0(),01)+8口(01,02)+...+8口(0 11-1,011)表示 所有滿足查詢條件的一組空間對象所在的路線的最短路徑長度,另外,除以r仍然是為了歸 一化評分。
[0104] 同樣,為了實現(xiàn)查詢,需要定義一個數(shù)據(jù)結(jié)構(gòu),記錄查詢已經(jīng)遍歷到的路線及空間 對象、剩余未被覆蓋的查詢關(guān)鍵詞、已經(jīng)被覆蓋的查詢關(guān)鍵詞和已經(jīng)遍歷的最短路徑長度, 偽碼如下所示。
[0106] 上述代碼中,〇1是一個列表,用來存儲查詢已經(jīng)遍歷到的滿足查詢條件的空間對 象及其路線上的邊的頂點,kl是用來存儲還未被覆蓋的查詢關(guān)鍵詞的列表,cvl是用來存儲 已經(jīng)被覆蓋的查詢關(guān)鍵詞的列表,spl是用來記錄查詢點q到主關(guān)鍵詞對象之間的最短路徑 長度(如果還沒有查找到主關(guān)鍵詞對象,則記錄查詢點q與目前路線已到達(dá)的頂點之間的最 短路徑長度)加上已經(jīng)查詢到的空間對象所在路線的最短路徑長度之和。
[0107] 2.2.2算法描述
[0108] 下面用偽碼給出了上一小節(jié)算法思想的具體描述。
[0109] 算法2.3:findP0ISet(查找候選集)
[0110] 輸入:9={(叉,7);|>,0];(1^,1^1,1?,...,1^);1^,1·}
[0111]輸出:候選集列表L
[0114]算法2.3進(jìn)行路網(wǎng)中面向集合和方向的主關(guān)鍵詞優(yōu)先的空間關(guān)鍵詞查詢,返回所 有滿足查詢條件的候選結(jié)果集。第1到3行創(chuàng)建了一些存儲對象并進(jìn)行了初始化。第4行,確 定了查詢點q所在的邊。第5到19行檢查了 q到其所在邊上的頂點之間路段上的空間對象。第 20到38行用while循環(huán)不斷的處理非空隊列U中的每條記錄,以擴展的方式實現(xiàn)在路網(wǎng)上面 向集合和方向的空間關(guān)鍵詞查詢。第39行,返回存有候選結(jié)果集的列表L,退出程序。
[0115]從算法2.3得到的候選集中查找結(jié)果集的方法同算法2.2,在此不再贅述。
[0116] 3實驗結(jié)果與分析
[0117] 3.1數(shù)據(jù)集的選取
[0118]本實驗使用的數(shù)據(jù)集是來自2012年EDBT(EDBT是國際數(shù)據(jù)庫界交流數(shù)據(jù)管理方面 最新研究成果的國際學(xué)術(shù)會議)發(fā)布的四個真實數(shù)據(jù)集,分別是Dublin,London,Australia 和British Isles四個城市的道路網(wǎng)。表3.1給出了這四個數(shù)據(jù)集特征的統(tǒng)計數(shù)據(jù)。對每個 數(shù)據(jù)集,隨機產(chǎn)生了 100個路網(wǎng)區(qū)域內(nèi)的位置作為查詢點位置和100組大小分別為1,2,3,4, 5的關(guān)鍵詞集。
[0119]表3.1數(shù)據(jù)集特征
[0121] 表3.2列出了實驗所需要的參數(shù),并用粗體字標(biāo)出了各參數(shù)的默認(rèn)值。實驗就每個 參數(shù),分別在不同的參數(shù)值下進(jìn)行了查詢,并記錄了每個參數(shù)值下查詢的響應(yīng)時間。驗證一 個參數(shù)取不同值對查詢性能的影響時,別的參數(shù)取預(yù)定義的默認(rèn)值。
[0122] 表3.2實驗參數(shù)
[0125] 3.2結(jié)果及分析
[0126] 在默認(rèn)數(shù)據(jù)集上,對不同參數(shù)取不同值時,進(jìn)行了面向集合和方向的無主關(guān)鍵詞 的空間關(guān)鍵詞查詢和面向集合和方向的主關(guān)鍵詞優(yōu)先的空間關(guān)鍵詞查詢,并用圖形的形式 對實驗結(jié)果進(jìn)行了形式化地表述。對于不同的數(shù)據(jù)集,各種查詢參數(shù)取默認(rèn)值的情況下,本 實驗進(jìn)行了這兩種查詢,根據(jù)實驗數(shù)據(jù)給出了這兩種查詢算法在不同數(shù)據(jù)集上的響應(yīng)時間 與數(shù)據(jù)集的關(guān)系圖及擴展查找邊的條數(shù)與數(shù)據(jù)集之間的關(guān)系圖,并對關(guān)系圖進(jìn)行了文字說 明。對于不同的分割方法,本實驗在不同數(shù)據(jù)集上進(jìn)行了查詢,根據(jù)實驗數(shù)據(jù)給出了不同分 割方法下相應(yīng)時間與數(shù)據(jù)集,擴展查找的邊數(shù)與數(shù)據(jù)集之間的關(guān)系圖,并對關(guān)系圖進(jìn)行了 文字說明。下面從不同的方面來闡述實驗結(jié)果及其分析。
[0127] 查詢方向角:如圖3.1所示,研究了不同查詢方向角對查詢時間的影響。隨著查詢 方向角的增大,需要查詢的邊數(shù)增多,則查詢的響應(yīng)時間相應(yīng)地也隨之增加。通過圖中線條 顯示,很明顯地能夠看出,查詢方向角增量不變的情況下,查詢的響應(yīng)時間增速加快,這說 明,查詢方向越向外擴展,需要查詢的范圍增速越來越大,相應(yīng)地,檢查邊的條數(shù)及空間對 象的個數(shù)的增速也越來越快。從圖中還可以看出,查詢方向角比較小時,查詢方向角的增加 對查詢響應(yīng)時間的增速影響不大。這說明進(jìn)行路網(wǎng)查詢時,查詢方向角較小,查詢擴展到的 邊很多都是因為方向角邊界線的約束而終止查詢路線的擴展。當(dāng)查詢方向角擴大到一定程 度時,路網(wǎng)中的邊比較容易擴展開,可以查詢的路線迅速增多。所以,查詢響應(yīng)時間的增速 也逐漸加快。
[0128] 查詢距離:圖3.2描述了不同的查詢距離約束下,查詢響應(yīng)時間的變化。隨著查詢 距離的變大,查詢的邊數(shù)增多,則查詢的時間相應(yīng)地也隨之增加。通過圖中線條顯示,很明 顯地能夠看出,查詢距離增量不變的情況下,查詢的響應(yīng)時間增速加快,這說明,查詢距離 越向外擴展,需要查詢的范圍增速越來越大,相應(yīng)地,檢查邊的條數(shù)及空間對象的個數(shù)的增 速也越來越快。
[0129] 查詢關(guān)鍵詞個數(shù):如圖3.3所示,研究了不同的查詢關(guān)鍵詞個數(shù)對查詢時間的影 響。隨著查詢關(guān)鍵詞個數(shù)的增多,面向集合和方向的無主關(guān)鍵詞的空間關(guān)鍵詞查詢和面向 集合和方向的主關(guān)鍵詞優(yōu)先的空間關(guān)鍵詞查詢都需要檢查更多的空間對象,則查詢的響應(yīng) 時間相應(yīng)地也隨之增加。盡管這兩種查詢隨著查詢關(guān)鍵詞個數(shù)的增加都需要更多的時間進(jìn) 行路網(wǎng)中的擴展查詢,但當(dāng)關(guān)鍵詞個數(shù)增加到一定程度時,查詢響應(yīng)時間的增加逐漸放緩, 這是因為受查詢方向角和查詢距離的約束,查詢關(guān)鍵詞增加到一定程度時,查詢會遍歷所 有能遍歷的邊,而再增加查詢關(guān)鍵詞個數(shù)也只是增加查詢關(guān)鍵詞與空間對象關(guān)鍵詞匹配的 時間。所以查詢響應(yīng)時間的增速逐漸放緩。
[0130] 不同的數(shù)據(jù)集:圖3.4顯示了不同數(shù)據(jù)集下兩種查詢的響應(yīng)時間。能夠看出在澳大 利亞路網(wǎng)中查詢的響應(yīng)時間比倫敦路網(wǎng)中較小,這是因為倫敦的路網(wǎng)比澳大利亞的密集。 一般情況下,對于同一個查詢距離,倫敦的道路網(wǎng)通常比澳大利亞道路網(wǎng)擁有更多的空間 對象和邊。通過圖3.5也能看出這種規(guī)律。圖3.5描繪了不同數(shù)據(jù)集上查詢處理期間所擴展 查找的邊的條數(shù)。
[0131] 分割方法:如圖3.6和圖3.7所示,分別研究了不同分割方法對面向集合和方向的 無主關(guān)鍵詞的空間關(guān)鍵詞查詢的響應(yīng)時間及查找邊數(shù)的影響。如圖3.8和圖3.9所示,分別 研究了不同分割方法對面向集合和方向的主關(guān)鍵詞優(yōu)先的空間關(guān)鍵詞查詢的響應(yīng)時間及 查找邊數(shù)的影響。與同等大小的分割方法相比,面向空間對象分布的方法效果更好。通過根 據(jù)空間對象的分布來分割道路網(wǎng),一些局域網(wǎng)比其他的局域網(wǎng)擁有更多的空間對象,相應(yīng) 地也擁有更多的關(guān)鍵詞。除此之外,擁有少量空間對象的區(qū)域能夠被分成較大的面積局域 網(wǎng)。因此,這種分割方法比同等大小的分割使得兩種查詢在查詢過程中刪減不相關(guān)的局域 網(wǎng)時更加高效。
[0132] 4結(jié)論
[0133] 空間關(guān)鍵詞查詢是數(shù)據(jù)庫領(lǐng)域研究中的新課題,圍繞這個課題,人們提出了各種 各樣的空間關(guān)鍵詞查詢。研究的數(shù)據(jù)背景主要有基于歐幾里得空間的數(shù)據(jù)和基于道路網(wǎng)空 間的數(shù)據(jù)?;跉W幾里得空間數(shù)據(jù),人們研究了 top-k空間關(guān)鍵詞查詢、面向集合的空間關(guān) 鍵詞查詢、基于密度的集合空間關(guān)鍵詞查詢、面向方向的空間關(guān)鍵詞查詢和面向集合方向 的空間關(guān)鍵詞查詢等。基于道路網(wǎng)中的空間數(shù)據(jù),人們研究了 k近鄰查詢、連續(xù)的k近鄰空間 關(guān)鍵詞查詢和具有范圍約束的空間關(guān)鍵詞查詢等。
[0134] 本發(fā)明在前人的研究基礎(chǔ)上,提出了一種面向集合的空間關(guān)鍵詞高效查詢方法, 即路網(wǎng)中面向集合受方向約束的空間關(guān)鍵詞查詢。針對這兩種查詢,本發(fā)明給出了相關(guān)的 定義,查詢的算法思想及詳細(xì)的算法描述。無論是面向無主關(guān)鍵詞的查詢還是面向主關(guān)鍵 詞優(yōu)先的查詢,其基本思想都是給定一個空間關(guān)鍵詞查詢9={(1,7);1>,0] ;(1^1,1?,..., kn);k,r},查詢返回k組空間對象,每組對象在一條滿足方向約束和范圍約束的線路上,且 這k組的評分函數(shù)值是所有滿足查詢要求的查詢結(jié)果集中最小的k個,而不同的是兩種查詢 的評分函數(shù)。
[0135] 到目前為止,道路網(wǎng)中面向集合和方向的空間關(guān)鍵詞查詢的研究還比較少,本發(fā) 明所提出的算法僅僅是一個基礎(chǔ)性研究,后期還可以在本發(fā)明的基礎(chǔ)上做大量的改進(jìn)工 作,例如:記錄一條滿足查詢條件的路線上所有覆蓋查詢關(guān)鍵詞的空間對象個數(shù),這樣返回 結(jié)果集時,可以考慮路線上空間對象的密度,把路線上所有覆蓋查詢關(guān)鍵詞的空間對象的 路線密度作為評分的一個考慮因素;對于面向集合和方向的主關(guān)鍵詞優(yōu)先的查詢,本發(fā)明 僅僅考慮了返回一條路線,而未考慮以主關(guān)鍵詞對象為起始點,進(jìn)行包圍查詢,這樣查詢出 的一組空間對象可能在以主關(guān)鍵詞對象為起始點的多條路線上。
【主權(quán)項】
1. 一種路網(wǎng)中面向集合的空間關(guān)鍵詞查詢方法,其特征在于,所述方法為路網(wǎng)中面向 集合受查詢方向約束的無主關(guān)鍵詞的空間關(guān)鍵詞查詢,其實現(xiàn)過程為: 步驟一、給定一個空間關(guān)鍵詞查詢9={(1,7);|>,0];(1^1,1?,...,1^);1^,1'},查詢返回1^ 組空間對象,每組對象在一條滿足方向約束和范圍約束的線路上,且這k組的評分函數(shù)值是 所有滿足查詢要求的查詢結(jié)果集中最小的k個; 步驟二、根據(jù)Cost函數(shù)的定義,知道路網(wǎng)中面向集合受查詢方向約束的無主關(guān)鍵詞的 空間關(guān)鍵詞查詢查找的一組結(jié)果是在一條路線上,假設(shè)路線上滿足查詢條件的一組空間對 象為(01,02,. . .,0n),該條路線的評分函數(shù)在此定義為:(2-1) 在公式(2-1)中,sp(q,〇1)表示查詢點q與空間對象〇1之間在路網(wǎng)中的最短路徑,sp( 〇i, 〇1+1)(l<i<n)表示空間對象〇1和〇1+1之間在路網(wǎng)中的最短路徑,公式中除以r是為了歸一 化評分,其中r是允許查詢的最長路徑長度; 步驟三、為了實現(xiàn)查詢,首先需要定義一個數(shù)據(jù)結(jié)構(gòu),記錄查詢已經(jīng)遍歷到的路線及空 間對象、剩余未被覆蓋的查詢關(guān)鍵詞和已經(jīng)遍歷的最短路徑長度,偽碼如下所示:上述代碼中,〇1是一個列表,用來存儲查詢已經(jīng)遍歷到的滿足查詢條件的空間對象及 其路線上的邊的頂點,kl是用來存儲還未被覆蓋的查詢關(guān)鍵詞的列表,spl是用來記錄查詢 已經(jīng)遍歷的最短路徑長度; 步驟四、查詢過程為: 給出一個查詢q,會給出查詢點的位置(q. X,q. y),查詢所面向的方向角[α,β],查詢關(guān) 鍵詞集q. Κ,查詢的路徑長度約束r,查詢結(jié)果數(shù)據(jù)集個數(shù)k; 步驟四(一)、首先初始化一個隊列U和一個列表L;U用來存儲每條遍歷路線,每條路線 需要存儲的信息即為上述定義的一個結(jié)構(gòu)體entry,在此稱為一條記錄,entry的〇1記錄當(dāng) 前已遍歷到的點,〇 1包括查詢點q、滿足查詢條件的空間對象和邊的頂點;且所述當(dāng)前已遍 歷到的點按遍歷順序存儲,entry的kl記錄目前還沒被已查詢的空間對象所覆蓋的查詢關(guān) 鍵詞,entry的spl記錄目前已遍歷到的點所在路線的最短路徑長度;L用來存儲滿足查詢條 件的記錄,在每條記錄中,〇1列表中的一組空間對象共同覆蓋查詢關(guān)鍵詞且所有對象所在 的路線在查詢方向角內(nèi),kl為空表明所有要查詢的關(guān)鍵詞已被查詢到的空間對象所覆蓋, sp 1的值小于路徑長度約束r的值; 步驟四(二)、然后,創(chuàng)建一條記錄,分三步進(jìn)行處理查詢點所在的邊及邊上的對象,第 一步,通過利用路網(wǎng)中局域網(wǎng)IR樹能夠定位到(9.1,9.7)所在的邊6^,把9加入6111:^的〇1 列表中,查詢關(guān)鍵詞加入到entry的kl列表中,entry的spl初始化為0;第二步,判斷頂點Vi 和W是否在查詢方向角內(nèi),假設(shè)W在方向角內(nèi),則檢查從q到W的路段上是否包含滿足查詢 條件的空間對象,若存在滿足查詢條件的空間對象,則把相應(yīng)的空間對象添加到entry的〇1 列表中,把相應(yīng)的關(guān)鍵詞從entry的kl列表中刪除,把entry的spl相應(yīng)的增加,否則,把頂點 vj加入到entry的〇1列表中即可,對于頂點Vi以同樣的方法進(jìn)行處理;第三步,若entry的kl 不為空,說明存在關(guān)鍵詞沒有被空間對象覆蓋,則把頂點W加入到entry的〇1列表中,相應(yīng) 地更新entry的spl,把記錄添加到隊列U中,否則說明查詢關(guān)鍵詞已被全部覆蓋,判斷此條 記錄的spl是否小于r,若是,則把此條記錄加入L,否則放棄此條記錄; 步驟四(三)、最后,進(jìn)行擴展遍歷的搜索: 通過從U中讀取并刪除一條條記錄,并且檢查每條記錄entry的〇1列表中最后一個元素 (即已遍歷到的最近的頂點)的鄰接表,若鄰接表中有多個鄰接點,則為每一鄰接點分支建 立一條虛擬記錄,然后核查每個新記錄對應(yīng)的鄰接邊并更新虛擬記錄,核查更新后的虛擬 記錄,如果不滿足查詢條件則刪除對應(yīng)的該虛擬記錄,然后為未終止的路線創(chuàng)建一條新記 錄并添加到U中; 循環(huán)地遍歷U直到隊列U為空,循環(huán)地遍歷隊列U,能夠從(q.x,q. y)開始,遍歷完方向角 [α,β]約束及路徑長度約束q.r內(nèi)的所有邊,采用驗證邊相同的方式來查找滿足查詢條 件的空間對象;在整個搜索過程中,以一種擴展的方式進(jìn)行遍歷查詢;搜索過程中,如果頂 點v x不是局域網(wǎng)的邊界點,則像上面處理頂點巧一樣處理vx,先是驗證目前頂點到vx的路段 上是否包含滿足查詢條件的空間對象,然后相應(yīng)的更新此條查詢路線的〇1列表,kl列表及 spl的值;否則,頂點vx的層次樹?;將會被遍歷;頂點^的層次樹7;將會被遍歷的過程如下: 首先,檢查仏根結(jié)點的倒排文件,看看是否包含有可能滿足查詢條件的空間對象。如果 不包含有可能滿足查詢條件的空間對象,可以通過短割跳過整個局域網(wǎng),而不進(jìn)行其內(nèi)部 邊的核查;否則,進(jìn)一步的核查它的孩子結(jié)點來檢索渴望查詢到的空間對象; 當(dāng)隊列U為空時,說明對路網(wǎng)的查詢已經(jīng)結(jié)束,從結(jié)果列表L中獲取要查詢的k組空間對 象:首先判斷一下L中的記錄個數(shù),如果記錄的個數(shù)小于等于k,則返回L中的所有記錄,否 貝1J,根據(jù)記錄的spl值返回列表L中最小的的k條記錄;每條記錄中的〇1列表即為滿足查詢輸 入的一條路線,存有滿足查詢輸入的一組空間對象。2.根據(jù)權(quán)利要求1所述的一種路網(wǎng)中面向集合的空間關(guān)鍵詞查詢方法,其特征在于,在 步驟四(三)中,不滿足查詢條件則刪除對應(yīng)的該虛擬記錄即為當(dāng)從隊列U中取出一條記錄 進(jìn)行擴展查詢時終止一條遍歷路線,終止一條遍歷路線分以下情況: 一,遍歷到某頂點時,檢測該頂點是否在該記錄中已經(jīng)遍歷過,如該頂點在該記錄已經(jīng) 遍歷過,則檢查記錄的〇1中最后一個頂點與該頂點間路線上的空間對象,記住滿足查詢條 件的空間對象,然后檢查這些空間對象是否覆蓋了 kl中的所有關(guān)鍵詞且若更新了 spl其是 否仍小于等于q的r,若是,則此條路線是要查詢的路線,創(chuàng)建一個與此條路線相對應(yīng)的新記 錄,把此條記錄添加到L中,否則,不創(chuàng)建新的記錄,放棄此路線的搜索; 二,若下一條要遍歷的邊與方向角邊界線相交,則首先求出相應(yīng)的交點,然后檢查記錄 的〇1中最后一個頂點到交點的路段上的空間對象,記住滿足查詢條件的空間對象,然后檢 查這些空間對象是否覆蓋了 kl中的所有關(guān)鍵詞且若更新了 spl其是否仍小于等于q的r,若 是,則此條路線是要查詢的路線,創(chuàng)建一個與此條路線相對應(yīng)的新記錄,把此條記錄添加到 L中,否則,不創(chuàng)建新的記錄,放棄此路線的搜索; 三,若搜索到達(dá)了某個空間對象時,此時的spl大于了 q的r且當(dāng)前記錄的kl中的關(guān)鍵詞 沒有被完全覆蓋或者遍歷到到達(dá)了某個空間對象時恰好當(dāng)前記錄的kl中的關(guān)鍵詞完全被 覆蓋,但是此時的spl正好大于了q的r,則說明搜索已經(jīng)擴展到了規(guī)定的范圍外,需要終止 此條路線的搜索; 四,若搜索到達(dá)了兩個局域網(wǎng)的邊界點,通過邊界點的索引樹知道下一個局域網(wǎng)不包 含渴望查詢到的空間對象,且記錄的spl加上下一個局域網(wǎng)的短割大于了 q的r,記錄的kl非 空,則說明此條查詢路線不可能滿足查詢要求,若越過一個局域網(wǎng)去查詢另外一個局域網(wǎng) 絕對超出了查詢的距離約束范圍r,需要終止此條路線的搜索; 五,若查詢遍歷完某個空間對象時,當(dāng)前記錄的kl中關(guān)鍵詞完全被覆蓋且此時的spl小 于等于q的r,則說明到此為止,此條查詢路線已經(jīng)滿足的查詢要求,此條路線上存在一組空 間對象聯(lián)合起來共同滿足所輸入查詢的關(guān)鍵詞,此時應(yīng)該終止此條路線的擴展,創(chuàng)建一條 相應(yīng)的新記錄或者更新當(dāng)前的記錄添加到L中。3. 根據(jù)權(quán)利要求1或2所述的一種路網(wǎng)中面向集合的空間關(guān)鍵詞查詢方法,其特征在 于,在步驟四(二)中,所述局域網(wǎng)IR樹用倒排文件對R樹的擴展,局域網(wǎng)IR樹中的每一個葉 子結(jié)點對應(yīng)道路網(wǎng)中最下層的一個局域網(wǎng),此最下層的局域網(wǎng)中的每一個邊都有一個詳細(xì) 的描述此邊的多段線組成,每一個多段線都被存儲到多段線文件中,并且,在局域網(wǎng)IR樹的 葉子節(jié)點上還有另外一個指針,指向包含此局域網(wǎng)內(nèi)所有邊的多段線信息的多段線文件; 在局域網(wǎng)IR樹中每一個非葉子結(jié)點包含一條形式為(cp,rect,cp. id)的記錄,其中cp是局 域網(wǎng)孩子結(jié)點的id,rect表示局域網(wǎng)的最小外接矩形,cp. id表示一個包含所有孩子結(jié)點文 本信息的倒排列表的id。4. 根據(jù)權(quán)利要求3所述的一種路網(wǎng)中面向集合的空間關(guān)鍵詞查詢方法,其特征在于,在 步驟四(二)中,利用路網(wǎng)中局域網(wǎng)IR樹能夠定位到(q.x,q.y)所在的邊e^,需要以下兩個 步驟:1)在局域網(wǎng)IR樹上執(zhí)行一個點位置查詢查找所有包含查詢位置的最小外接矩形(最 底層局域網(wǎng));2)執(zhí)行一次過濾程序選擇精確的多段線。5. -種路網(wǎng)中面向集合的空間關(guān)鍵詞查詢方法,其特征在于,所述方法為路網(wǎng)中面向 集合受查詢方向約束的主關(guān)鍵詞優(yōu)先的空間關(guān)鍵詞查詢,其實現(xiàn)過程為: 步驟一、給定一個空間關(guān)鍵詞查詢q=<(q.x,q.y); [α,β]; {ko,ki,k2, . . .kn} ;k,r>,查 詢返回k組空間對象,每組的對象在一條滿足方向約束和范圍約束的線路上,且此k組的評 分函數(shù)值是所有滿足查詢要求的查詢結(jié)果集中最小的k個; 步驟二、根據(jù)Cost函數(shù)的定義,知道路網(wǎng)中面向集合和方向的主關(guān)鍵詞優(yōu)先的空間關(guān) 鍵詞查詢查找的一組結(jié)果是在一條路線上,假設(shè)路線上滿足查詢條件的一組空間對象為 (〇〇,〇1, 〇2,...,〇"),而對象〇1{(0^^<11)包含主查詢關(guān)鍵詞1?,這條路線的評分函數(shù)在此定 義為:(2-2) 在公式(2-2)中,Sp(q,〇Q)表示查詢點q與空間對象〇〇之間在路網(wǎng)中的最短路徑,sp( 〇i, 〇1+1)(l<i<n)表示空間對象〇1和〇1+1之間在路網(wǎng)中的最短路徑,公式中除以r是為了歸一 化評分,其中r是允許查詢的最長路徑長度; 步驟三、定義一個數(shù)據(jù)結(jié)構(gòu),記錄查詢已經(jīng)遍歷到的路線及空間對象、剩余未被覆蓋的 查詢關(guān)鍵詞、已經(jīng)被覆蓋的查詢關(guān)鍵詞和已經(jīng)遍歷的最短路徑長度,偽碼如下所示:上述代碼中,〇1是一個列表,用來存儲查詢已經(jīng)遍歷到的滿足查詢條件的空間對象及 其路線上的邊的頂點,kl是用來存儲還未被覆蓋的查詢關(guān)鍵詞的列表,cvl是用來存儲已經(jīng) 被覆蓋的查詢關(guān)鍵詞的列表,spl是用來記錄查詢點q到主關(guān)鍵詞對象之間的最短路徑長度 加上已經(jīng)查詢到的空間對象所在路線的最短路徑長度之和;如果還沒有查找到主關(guān)鍵詞對 象,則記錄查詢點q與目前路線已到達(dá)的頂點之間的最短路徑長度; 步驟四、查詢過程為: 給出一個查詢q,用戶提交的查詢q會給出查詢點的位置(q. X,q. y),查詢所面向的方向 角[α,β],查詢關(guān)鍵詞集q.K,查詢的路徑長度約束r,查詢結(jié)果數(shù)據(jù)集個數(shù)k; 以迭代替換的方式進(jìn)行擴展查詢直到查詢到主關(guān)鍵詞對象,所述迭代替換為:如果當(dāng) 前遍歷到的空間對象包含的某個關(guān)鍵詞在之前已經(jīng)有空間對象覆蓋,則把之前的空間對象 從〇1列表中刪除,如果刪除之后列表的頭元素是邊的頂點,則把頂點刪除直到列表的頭元 素為空間對象,之后把當(dāng)前遍歷到空間對象添加到〇1列表的后面;然后,若還有關(guān)鍵詞沒有 被已查詢到的空間對象所覆蓋,則以面向無主關(guān)鍵詞的查詢方式繼續(xù)進(jìn)行擴展查詢。
【文檔編號】G06F17/30GK105868336SQ201610182802
【公開日】2016年8月17日
【申請日】2016年3月28日
【發(fā)明人】周連科, 王念濱, 王紅濱, 王衛(wèi)兵, 王瑛琦, 何鳴, 宋奎勇
【申請人】哈爾濱工程大學(xué)