專利名稱:基于精確索引的對等網(wǎng)絡(luò)搜索方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種對等網(wǎng)絡(luò)的搜索方法,特別涉及一種基于精確索引的對等網(wǎng)絡(luò)搜索方法。
技術(shù)背景在基于關(guān)鍵字的搜索方式下,每個資源r由一個關(guān)鍵字集合K(r)描述。用戶的搜索條件 集合表示為一個關(guān)鍵字集合W={Wl,w2,-,wn}。滿足W的資源r組成的集合為為了在對等網(wǎng)絡(luò)環(huán)境下搜索時計算得到集合R,需要讓對等網(wǎng)絡(luò)的節(jié)點上以分布式的方式 維護(hù)資源的索引。搜索時根據(jù)索引匹配資源,并計算得到搜索結(jié)果。現(xiàn)有系統(tǒng)使用的是超集索引。設(shè)關(guān)鍵字集合W^沐l,w2,…,wnh則W的超集索引I(W)定義為資源r的集合"『)-^Vw's『,w'利用超集索引進(jìn)行搜索時,搜索結(jié)果R的計算方/ = 1 /(K) t巧=『法為 w 。其中,w 。最早采用超集索引的搜索系統(tǒng)是反向索引系統(tǒng)。在這種方式下,每個關(guān)鍵字集合W有且 只含有一個關(guān)鍵字。在結(jié)構(gòu)化對等網(wǎng)絡(luò)中,每個關(guān)鍵字集合的超集索引作為數(shù)據(jù)對象由一個 確定的網(wǎng)絡(luò)節(jié)點維護(hù)。易見,對于一些在較多的資源中出現(xiàn)的"熱門"關(guān)鍵字,這些關(guān)鍵字 的超集索引的規(guī)模相對較大。因此,關(guān)鍵字出現(xiàn)頻率不均勻且通常滿足Zipf分布,致使各個 節(jié)點所維護(hù)索引的規(guī)模差異極大。這帶來的問題之一是各個節(jié)點在用于存放索引的空間開銷, 以及存取索引的訪問量上相差巨大,形成負(fù)載不均衡。問題之二是以上的不均衡致使維護(hù)較 大規(guī)模的節(jié)點易成為整個系統(tǒng)的瓶頸和薄弱點, 一旦這些節(jié)點發(fā)生故障,則整個網(wǎng)絡(luò)將陷入 癱瘓。針對這樣的情況,存在兩種解決路線。 一種路線是在全局索引系統(tǒng)中規(guī)模較小的索引上 附加一起輔助信息,以減少對規(guī)模較大的索引的訪問,例如,P. Reynolds和A. Vahdat在其 文章中總結(jié)的利用Bloom Filter、 Cache等方法進(jìn)行改良屬于此類。另一種路線是允許超集 索引的關(guān)鍵字集合W含有多個關(guān)鍵字。0. D. Gnawali是較早在此方面做出嘗試的人之一,他在學(xué)位論文中提出,每個關(guān)鍵字集 合含有n個關(guān)鍵字,n為固定值。對于K(r)的每個n元素的子集,資源r出現(xiàn)在該子集的超5集索引中??梢钥闯觯?dāng)『1時,這種方法與反向索引相同。Lintao Liu等人利用他們稱之為關(guān)鍵字融合(Keyword Fusion)的方法,將出現(xiàn)頻率高 的關(guān)鍵字與若干個其它關(guān)鍵字合并成一個關(guān)鍵字集,以此為原則設(shè)置超集索引,這使原本高 頻率關(guān)鍵字的索引內(nèi)容分散至相對出現(xiàn)頻率較低的各個關(guān)鍵字集的索引中??傮w上說,這兩種路線起到的是改良效果,未能從根本上解決問題。這是因為關(guān)鍵字頻 率極不均勻這一現(xiàn)象是不可改變的,該現(xiàn)象或多或少地影響著基于超集索引的搜索系統(tǒng)。發(fā)明內(nèi)容本發(fā)明的目的是提供一種基于對等網(wǎng)絡(luò)、指向性與目標(biāo)性明確且能有效平衡節(jié)點負(fù)載的 基于精確索引的對等網(wǎng)絡(luò)搜索方法。一種基于精確索引的對等網(wǎng)絡(luò)搜索方法,其特征在于,當(dāng)搜索請求為關(guān)鍵字集合W時, 搜索系統(tǒng)執(zhí)行以下步驟得到搜索結(jié)果步驟A、設(shè)置集合Set^Wh步驟B、選定Set中一個關(guān)鍵字集合Wx,所述關(guān)鍵字集合fc的Node(Wx)在本次搜索中沒 有訪問過,訪問上述Node(Wx)獲取獲取I(Wx)和SS(Wx),將SS(Wx〉中所有字典項的鍵值加入 Set中,然后,將Wx從Set中刪除;步驟C、判斷Set是否為空,若是,則接下一步,若否,則跳轉(zhuǎn)至步驟B;步驟D、根據(jù)獲取的所有t個精確索引,計算結(jié)果R并返回所述結(jié)果K;其中,W為用戶的搜索條件集合表示的一個關(guān)鍵字集合,Node(W〉為對等網(wǎng)絡(luò)中為W的精 確索引唯一地找到的一個負(fù)責(zé)維護(hù)它的節(jié)點,I(W)為W的精確索引集合,SS(W)為Node(W)維 護(hù)的一個以關(guān)鍵字集合為鍵值的字典數(shù)據(jù)結(jié)構(gòu),Wx為W的每一個關(guān)鍵字?jǐn)?shù)量為iW卜l的真子 集每個資源r由一個關(guān)鍵字集合K(r)描述,關(guān)鍵字集合W—wl,w2,…,wn!, W的精確索引 ,)=WVW'-eWw'"(")' avw;eF'^"W},在搜索條件為關(guān)鍵字集合wx的情況下,搜索結(jié)果為/ = +/(^),其中的t個Wi是Wx的所有t個超集。其中,叫++ c + ..,. + c + w )ID,為關(guān)鍵字集合W的精確索引的標(biāo)識符,c為一個關(guān)鍵字中不使用的字符,加號為字符 串連接操作符,函數(shù)h(a)為一個哈希函數(shù),node(W)根據(jù)標(biāo)識符IDw得到 其中,步驟B可具體為 步驟B-a、選定Set中的一個關(guān)鍵字集合Wx;6步驟B-b、判斷Node(Wx)在本次搜索中是夠訪問過,若是,則跳轉(zhuǎn)至步驟B-d,若否,則 跳轉(zhuǎn)至步驟B-C;
步驟B-c、訪問所述Node (Wx)獲取獲取I (Wx)和SS (Wx),將SS (Wx)中所有字典項的鍵值 加入Set中,然后,將Wx從Set中刪除,隨后,跳轉(zhuǎn)至步驟C;
步驟B-d、選定下一個關(guān)鍵字集合Wx,然后跳轉(zhuǎn)至步驟B-b。 如權(quán)利要求1所述的基于精確索引的對等網(wǎng)絡(luò)搜索方法,其特征在于
所述節(jié)點Node(W)執(zhí)行一種搜索輔助信息的維護(hù)方法,所述搜索輔助信息的維護(hù)方法,其 特征在于,包含以下步驟
步驟I、令Count (W)=0, SS(W)-空集,設(shè)置定時器;
步驟II、節(jié)點Node (W)進(jìn)行判斷,收到信息Message(W'),則跳轉(zhuǎn)至步驟III,收到 定時器計時已滿的信息,則跳轉(zhuǎn)到步驟IV,沒有接收到信息或接收到的信息既不是 Message(W')也不是定時器計時已滿的信息,則重復(fù)步驟II;
步驟III、添加或更新SS(W)中的字典項,然后跳轉(zhuǎn)至步驟II;
步驟IV、更新Count(W)為當(dāng)前精確索引I(W)中資源的數(shù)量,計算
,并對于W的每一個關(guān)鍵字?jǐn)?shù)量為M一的真子
集Wx,向Node (Wx)發(fā)送Message (W),然后跳轉(zhuǎn)至步驟II;
其中,Count(W)代表關(guān)鍵字集合W的精確索引中資源的數(shù)量,Message(W)代表來自Node(W) 節(jié)點發(fā)送的一個整數(shù)值。
其中,步驟II具體可為
步驟III、節(jié)點Node (W)判斷是否接收到信息,若是則跳轉(zhuǎn)至步驟IIII,若否, 則重復(fù)步驟IIIL
步驟IIII、節(jié)點Node (W)判斷所接收到的信息是否是Message(W'),若是,則跳轉(zhuǎn)
至步驟in,若否,則跳轉(zhuǎn)至步驟nin;
步驟IIIII、節(jié)點Node (W)判斷所接收到的信息是否是定時器計時已滿的信息,若
是則跳轉(zhuǎn)到步驟iv,若否,則跳轉(zhuǎn)至步驟nn。 其中,步驟ni具體可為
判斷ss(w)中是否存在鍵值為w'的字典項,若存在,則更新ss(w)中鍵值為w'的字典
項為Message(W,),若不存在,則創(chuàng)建SS(W)[W' ]=Message(W,),然后跳轉(zhuǎn)至步驟II。 所述節(jié)點Node(W)亦執(zhí)行一種基于精確索引的維護(hù)方法,所述基于精確索引的維護(hù)方法,
7其特征在于,包含以下步驟
步驟l、節(jié)點Node(W)進(jìn)行判斷,收到關(guān)鍵字集合為W的資源擁有者向Node(W)發(fā)送的關(guān) 鍵字集合為W的資源加入網(wǎng)絡(luò)的信息,則跳轉(zhuǎn)至步驟2,收到關(guān)鍵字集合為W的資源擁有者向 Node(W)發(fā)送的關(guān)鍵字集合為W的資源退出網(wǎng)絡(luò)的信息,則跳轉(zhuǎn)至步驟3,沒有接收到信息或 收到的信息不是所述資源擁有者發(fā)送的關(guān)鍵字集合為W的資源加入或退出網(wǎng)絡(luò)的信息,則重 復(fù)步驟l;
步驟2、節(jié)點NodeOV)將關(guān)鍵字集合為W的資源加入到它所維護(hù)的W的精確索引中,然后 跳轉(zhuǎn)至步驟l;
步驟3、節(jié)點Node(W)將關(guān)鍵字集合為W的資源從它所維護(hù)的W的精確索引中刪除,然后 跳轉(zhuǎn)至步驟l。
其中,所述步驟l可具體為-
步驟1-1、節(jié)點Node(W)判斷是否收到信息,若是,則跳轉(zhuǎn)至步驟1-2,若否,則重復(fù)步 驟l-l;
步驟l-2、節(jié)點Node(W)判斷所收到的信息是否為關(guān)鍵字集合為W的資源擁有者向Node(W) 發(fā)送的關(guān)鍵字集合為W的資源加入網(wǎng)絡(luò)的信息,若是,則跳轉(zhuǎn)至步驟2,若否,則跳轉(zhuǎn)至步驟 1-3;
步驟l-3、節(jié)點Node(W)判斷所收到的信息是否為關(guān)鍵字集合為W的資源擁有者向Node(W) 發(fā)送的關(guān)鍵字集合為W的資源退出網(wǎng)絡(luò)的信息,若是,則跳轉(zhuǎn)至步驟3,若否,則跳轉(zhuǎn)至步驟 1-1。
基于精確索引的對等網(wǎng)絡(luò)搜索系統(tǒng)可用于構(gòu)建基于對等網(wǎng)絡(luò)的資源査找、定位及交換的 共享平臺。所涉及的資源不僅可以是單純的文件,亦可以是基于對等網(wǎng)絡(luò)的服務(wù)等抽象資源。 本發(fā)明的有益效果在于
1、 完全基于對等網(wǎng)絡(luò)的資源搜索
目前許多基于對等網(wǎng)絡(luò)的應(yīng)用依賴于一個分離的資源發(fā)布渠道,比如由一個因特網(wǎng)的站 點或一臺服務(wù)器提供資源的查尋服務(wù),而對等網(wǎng)絡(luò)本身只負(fù)責(zé)資源的交換。本搜索系統(tǒng)能提 供一個完全基于對等網(wǎng)絡(luò)的資源搜索平臺,這使資源搜索平臺也能利用對等網(wǎng)絡(luò)容錯性、可 靠性和可擴展性提供高質(zhì)量的服務(wù)。
2、 搜索過程中網(wǎng)絡(luò)開銷問題
目前基于非結(jié)構(gòu)化對等網(wǎng)絡(luò)的搜索系統(tǒng)采用泛洪或有選擇性遍歷方式訪問鄰近節(jié)點,搜 索資源。由于此類方法缺乏明確的指向性,搜索效率不高,因而需要在網(wǎng)絡(luò)上交換大量的消
8息。本搜索系統(tǒng)遍歷節(jié)點的方式具有明確的指向性和目標(biāo),效率高,能節(jié)省阿絡(luò)開銷。 3、搜索系統(tǒng)對于各對等網(wǎng)絡(luò)節(jié)點的負(fù)載平衡問題
如背景介紹中所述,目前基于結(jié)構(gòu)化對等網(wǎng)絡(luò)的搜索系統(tǒng)中,如反向索引,節(jié)點的負(fù)載 差異很大,容易形成瓶頸并引發(fā)嚴(yán)重癱瘓。本系統(tǒng)能有效平衡節(jié)點負(fù)載,避免這類性能問題。
圖1為基于精確索引的維護(hù)方法流程圖。
圖2為搜索輔助信息的維護(hù)方法流程圖。
圖3為基于精確索引的對等網(wǎng)絡(luò)搜索方法流程圖。
圖4為關(guān)鍵字出現(xiàn)頻率的Zipf分布圖。
圖5為超集索引與精確索引的負(fù)載對比示意圖。
圖6為一個關(guān)鍵字和兩個關(guān)鍵字的搜索請求中超集遍歷的長度示意圖。
具體實施例方式
下面結(jié)合附圖詳細(xì)說明本發(fā)明的優(yōu)選實施例。
本發(fā)明提出一種結(jié)構(gòu)化的對等網(wǎng)絡(luò)環(huán)境下基于關(guān)鍵字的資源搜索系統(tǒng)。該搜索系統(tǒng)在資 源的描述、搜索條件和搜索結(jié)果三個方面,定義了對等網(wǎng)絡(luò)環(huán)境下基于關(guān)鍵字的資源搜索。
首先,每個資源r由一個關(guān)鍵字集合K(r)描述。系統(tǒng)中任何一個關(guān)鍵字,要么屬于這個 集合,要么不屬于這個集合。系統(tǒng)中所有資源的關(guān)鍵字集合的并集記為A, A即為系統(tǒng)中關(guān)鍵 字的全集。
其次,用戶的搜索條件集合表示為一個關(guān)鍵字集合W- l,w2,…,wnh該集合表示,用戶 所要找的資源,其關(guān)鍵字集合中必含中W中的關(guān)鍵字。
最后,根據(jù)W的定義,滿足W的資源r組成的集合R即為系統(tǒng)返回的搜索結(jié)果。R的數(shù)學(xué) 定義為/ -klVw^『,w'eK。"。
本發(fā)明所提出的搜索系統(tǒng)由四個部分組成精確索引的定義;精確索引的維護(hù)方法;搜 索輔助信息的維護(hù)方法;搜索方法。具體步驟如下 一、精確索引的定義步驟
設(shè)關(guān)鍵字集合W^wl,w2,…,wnh則W的精確索引I(W)定義為集合 ={/ I Vw, e『,w, e且e ^, w; g
9如果搜索條件為關(guān)鍵字集合Wx,則搜索結(jié)果R的計算方法是 w 。其中的t個Wi是Wx的所有t個超集。
二、精確索引的維護(hù)步驟
在結(jié)構(gòu)化的對等網(wǎng)絡(luò)中,數(shù)據(jù)對象根據(jù)它的標(biāo)識符可以唯一地找到一個網(wǎng)絡(luò)中的節(jié)點, 用以負(fù)責(zé)維護(hù)這個數(shù)據(jù)對象。在本發(fā)明提出的搜索系統(tǒng)中,關(guān)鍵字集合W的精確索引的標(biāo)識 符IDW定義為
其中,c為一個關(guān)鍵字中不使用的字符,它作為關(guān)鍵字間的分隔符;式中的加號為字符串 連接操作符;函數(shù)h(a)為一個哈希函數(shù)。
根據(jù)這個標(biāo)識符,在結(jié)構(gòu)化對等網(wǎng)絡(luò)中為W的精確索引唯一地找到一個負(fù)責(zé)維護(hù)它的節(jié) 點,記為Node(W)。 Node(W)負(fù)責(zé)以下兩種任務(wù)。
1. 當(dāng)有關(guān)鍵字集合為W的資源加入網(wǎng)絡(luò)時,資源的擁有者向Node(沐)發(fā)送一條消息。 Node(W)收到消息后,將該資源加入到它所維護(hù)的W的精確索引中。
2. 當(dāng)有關(guān)鍵字集合為W的資源退出網(wǎng)絡(luò)時,資源的擁有者向Node(W)發(fā)送一條消息。 Node(W)收到消息后,將該資源從它所維護(hù)的W的精確索引中刪除。
通過執(zhí)行以上兩種任務(wù),Node(W)使W的精確索引始終保持與定義一致,代表了當(dāng)前網(wǎng)絡(luò) 中關(guān)鍵集合為W的資源的集合。
請參閱圖1,圖1為Node (W)執(zhí)行上述兩種任務(wù)的方法流程圖,即基于精確索引的維護(hù) 方法的流程圖,其步驟有-
Sl-l、節(jié)點Node(W)判斷是否收到信息,若是,則跳轉(zhuǎn)至Sl-2,若否,則重復(fù)S卜l;
Sl-2、節(jié)點Node (W)判斷所收到的信息是否為關(guān)鍵字集合為W的資源擁有者向Node(W) 發(fā)送的關(guān)鍵字集合為W的資源加入網(wǎng)絡(luò)的信息,若是,則跳轉(zhuǎn)至Sl-4,若否,則跳轉(zhuǎn)至步驟 1-3;
S卜3、節(jié)點Node (W)判斷所收到的信息是否為關(guān)鍵字集合為W的資源擁有者向Node(W) 發(fā)送的關(guān)鍵字集合為W的資源退出網(wǎng)絡(luò)的信息,若是,則跳轉(zhuǎn)至S1-5,若否,則跳轉(zhuǎn)至Sl-l;
Sl-4、節(jié)點Node(W)將關(guān)鍵字集合為W的資源加入到它所維護(hù)的W的精確索引中,然后跳 轉(zhuǎn)至S1-1;51- 5、節(jié)點Node(W)將關(guān)鍵字集合為W的資源從它所維護(hù)的W的精確索引中ir除,然后跳 轉(zhuǎn)至S1-1。
三、搜索輔助信息的維護(hù)步驟
每個對等網(wǎng)絡(luò)的節(jié)點除了維護(hù)其負(fù)責(zé)的精確索引外,還要對于每個所維護(hù)的精確索引維 護(hù)一定的附加數(shù)據(jù)。
設(shè)Count (W)代表該關(guān)鍵字集合W的精確索引中資源的數(shù)量,Message (W)代表來自Node (W) 節(jié)點發(fā)送的一個整數(shù)值,SS(W)為Node(W)維護(hù)的一個以關(guān)鍵字集合為鍵值的字典數(shù)據(jù)結(jié)構(gòu), 則節(jié)點Node(W)執(zhí)行以下方法
1 Count (W)=0, SS(W):空集;
2 若收到Message (W')則
若SS(W)中不存在鍵值為W'的字典項,則
SS(W)[W, ]=Message(W,); 否則
更新SS(W)中鍵值為W'的字典項為Message (W'); 3定期執(zhí)行以下操作
更新Count(W)為當(dāng)前精確索引I(W)中資源的數(shù)量;
計算 嵐,(fT)eSS(HO
對于W的每一個關(guān)鍵字?jǐn)?shù)量為1叫—1的真子集Wx,向Node (Wx)發(fā)送Message (W); 4跳轉(zhuǎn)至2,重復(fù)執(zhí)行。
通過反復(fù)執(zhí)行以上方法,SS(W)中保存的每一個Message(W')值表示如果選擇W'的精確 索引作為下一個搜索的索引,則將能在后續(xù)的索引中搜索到的資源的數(shù)目。
請參閱圖2,圖2為上述搜索輔助信息的維護(hù)方法的流程圖,其包含以下步驟
52- l、令Count (W)=0, SS(W)^空集,設(shè)置定時器;
S2-2、節(jié)點Node (W)判斷是否接收到信息,若是則跳轉(zhuǎn)至S2-3,若否,則重復(fù)S2-2; S2-3、節(jié)點Node (W)判斷所接收到的信息是否是Message(W'),若是,則跳轉(zhuǎn)至S2-5, 若否,則跳轉(zhuǎn)至S2-4;
S2-4、節(jié)點Node (W)判斷所接收到的信息是否是定時器計時已滿的信息,若是則跳轉(zhuǎn)到 S2-8,若否,則跳轉(zhuǎn)至S2-2;
11S2-5、判斷SS(W)中是否存在鍵值為W'的字典項,若存在,跳轉(zhuǎn)至S2-6,若不存在,則 跳轉(zhuǎn)至S2-7;
S2-6、更新SS(W)中鍵值為W,的字典項為Message(W'),然后跳轉(zhuǎn)至S2-2; S2-7、創(chuàng)建SS(W)[W, ]:Message(W,),然后跳轉(zhuǎn)至S2-2;
52- 8、更新Count (W)為當(dāng)前精確索引I(W)中資源的數(shù)量,計算
wg,')sSSW ,并對于w的每一個關(guān)鍵字?jǐn)?shù)量為IW-1的真子
集Wx,向Node (Wx)發(fā)送Message (W),然后跳轉(zhuǎn)至S2-2。 四、搜索步驟
系統(tǒng)在執(zhí)行搜索過程時,利用第三方面所述的輔助信息,找到所需的精確索,計算出搜 索結(jié)果。
當(dāng)搜索請求為關(guān)鍵字集合W時,搜索系統(tǒng)執(zhí)行以下方法得到搜索結(jié)果 1令集合Set-W;
2對于當(dāng)前Set中的每一個關(guān)鍵字集合Wx;
3 如果Node(Wx)在本次搜索中沒有訪問過,則
4 訪問Node (Wx)獲取I (Wx)和SS (Wx);
5 將SS(Wx)中所有字典項的鍵值加入Set中;
6 將Wx從Set中去除;
7如果Set不為空則跳轉(zhuǎn)至2,否則轉(zhuǎn)至8;
8根據(jù)獲取的所有t個精確索引,計算并返回該結(jié)果R。
請參與圖3,圖3為上述基于精確索引的對等網(wǎng)絡(luò)搜索方法的流程圖,其包含以下步驟
53- l、設(shè)置集合Set^Wh
S3-2、選定Set中的一個關(guān)鍵字集合Wx;
S3-3、判斷Node(Wx)在本次搜索中是否訪問過,若是,則跳轉(zhuǎn)至S3-5,若否,則跳轉(zhuǎn)至 S3-4;
S3-4、訪問所述Node(Wx)獲取獲取I (Wx)和SS(Wx),將SS(Wx)中所有字典項的鍵值加入 Set中,然后,將Wx從Set中刪除,隨后,跳轉(zhuǎn)至S3-5;
S3-5、選定下一個關(guān)鍵字集合Wx,然后跳轉(zhuǎn)至步驟S3-3。;
12S3-6、判斷Set是否為空,若是,則接S3-7,若否,則跳轉(zhuǎn)至S3-5;
S3-7、根據(jù)獲取的所有t個精確索引,計算結(jié)果 '=1 并返回所述結(jié)果R。
為驗證上述方法,本實施例從一個Karlsruhe大學(xué)提供的一個由S冊C描述的OWL文件中 提取經(jīng)語義描述后的2000個對象作為測試用的資源,根據(jù)對象的語義描述提取對象的關(guān)鍵字。 各個對象平均擁有7.4個關(guān)鍵字。統(tǒng)計各個關(guān)鍵字的出現(xiàn)頻率,發(fā)現(xiàn)關(guān)鍵字的出現(xiàn)頻率與其 出現(xiàn)頻率的排名成如圖4所示的Zipf分布。
實例選取網(wǎng)絡(luò)節(jié)點規(guī)模為256個時,反向索引系統(tǒng)與精確索引系統(tǒng)各節(jié)點負(fù)載的差異。 實驗將節(jié)點的負(fù)載定義為節(jié)點上各索引所含資源數(shù)量的總和。將節(jié)點按負(fù)載由低到高排序后, 兩個系統(tǒng)中節(jié)點排名與負(fù)載的關(guān)系如圖5所示。
可見,精確索引系統(tǒng)比使用超集索引的反向索引系統(tǒng)負(fù)載低得多。從圖中也可知道,反 向索引的負(fù)載總數(shù)也大大高于精確索引。這是因為單個資源可以出現(xiàn)在多個超集索引中,但 只可能出現(xiàn)在一個精確索引中。
實例又模擬了含有一個關(guān)鍵字和含有兩個關(guān)鍵字的搜索請求,統(tǒng)計在返回90%以上的搜索 結(jié)果時需要訪問的節(jié)點數(shù)。統(tǒng)計時分別計算訪問的節(jié)點數(shù)占總節(jié)點數(shù)的比例小于yy。的搜索請 求占總搜索請求數(shù)的百分比x免,以(x%, y%)為坐標(biāo)繪出圖6。
圖中的結(jié)果說明90%以上的搜索請求只需遍歷不到5%的節(jié)點便可以完成搜索,這樣的開 銷對于對等網(wǎng)絡(luò)系統(tǒng)來說是可以接受的。
以上實施例僅用以說明而非限制本發(fā)明的技術(shù)方案。不脫離本發(fā)明精神和范圍的任何修 改或局部替換,均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
權(quán)利要求
1、一種基于精確索引的對等網(wǎng)絡(luò)搜索方法,其特征在于,當(dāng)搜索請求為關(guān)鍵字集合W時,搜索系統(tǒng)執(zhí)行以下步驟得到搜索結(jié)果步驟A、設(shè)置集合Set={W};步驟B、選定Set中一個關(guān)鍵字集合Wx,所述關(guān)鍵字集合Wx的Node(Wx)在本次搜索中沒有訪問過,訪問上述Node(Wx)獲取獲取I(Wx)和SS(Wx),將SS(Wx)中所有字典項的鍵值加入Set中,然后,將Wx從Set中刪除;步驟C、判斷Set是否為空,若是,則接下一步,若否,則跳轉(zhuǎn)至步驟B;步驟D、根據(jù)獲取的所有t個精確索引,計算結(jié)果R并返回所述結(jié)果R;其中,W為用戶的搜索條件集合表示的一個關(guān)鍵字集合,Node(W)為對等網(wǎng)絡(luò)中為W的精確索引唯一地找到的一個負(fù)責(zé)維護(hù)它的節(jié)點,I(W)為W的精確索引集合,SS(W)為Node(W)維護(hù)的一個以關(guān)鍵字集合為鍵值的字典數(shù)據(jù)結(jié)構(gòu),Wx為W的每一個關(guān)鍵字?jǐn)?shù)量為|W|-1的真子集,R為滿足W的資源r組成的集合。
2、 如權(quán)利要求l所述的基于精確索引的對等網(wǎng)絡(luò)搜索方法,其特征在于,步驟B具體為-步驟B-a、選定Set中的一個關(guān)鍵字集合Wx;步驟B-b、判斷Node(Wx)在本次搜索中是夠訪問過,若是,則跳轉(zhuǎn)至步驟B-d,若否,則 跳轉(zhuǎn)至步驟B-c;步驟B-c、訪問所述Node(Wx)獲取獲取I(Wx)和SS(Wx),將SS (Wx)中所有字典項的鍵值 加入Set中,然后,將Wx從Set中刪除,隨后,跳轉(zhuǎn)至步驟C; 步驟B-d、選定下一個關(guān)鍵字集合Wx,然后跳轉(zhuǎn)至步驟B-b。
3、 如權(quán)利要求1所述的基于精確索引的對等網(wǎng)絡(luò)搜索方法,其特征在于每個資源 r由一個關(guān)鍵字集合K(r)描述,系統(tǒng)中任何一個關(guān)鍵字,要么屬于這個集合,要么不屬于這 個集合,關(guān)鍵字集合WMwl,w2,…,wnh W的精確索引<formula>formula see original document page 2</formula> 且<formula>formula see original document page 2</formula>在搜索條件為關(guān)鍵字集合WX的情況下,搜索結(jié)果為^ = +/(^),其中的t個Wi是Wx的所有t 個超集。
4、 如權(quán)利要求l所述的基于精確索引的對等網(wǎng)絡(luò)搜索方法,其特征在于 關(guān)鍵字集合W的精確索引的標(biāo)識符f^"^+"W2" +…+ "^);其中,c為一個關(guān)鍵字中不使用的字符,加號為字符串連接操作符,函數(shù)h(a)為一個哈希函數(shù),node(W)根據(jù)標(biāo)識符ID,得到。
5、 如權(quán)利要求1所述的基于精確索引的對等網(wǎng)絡(luò)搜索方法,其特征在于,所述節(jié)點 Node(W)執(zhí)行一種搜索輔助信息的維護(hù)方法,所述搜索輔助信息的維護(hù)方法,包含以下步驟-步驟I、令Count(W)i, SS(W卜空集,設(shè)置定時器;步驟II、節(jié)點Node (W)進(jìn)行判斷,收到信息Message(W,),則跳轉(zhuǎn)至步驟III,收到 定時器計時已滿的信息,則跳轉(zhuǎn)到步驟IV,沒有接收到信息或接收到的信息既不是 Message(W')也不是定時器計時已滿的信息,則重復(fù)步驟II;步驟III、添加或更新SS(W)中的字典項,然后跳轉(zhuǎn)至步驟II;步驟IV、更新Count (W)為當(dāng)前精確索引I(W)中資源的數(shù)量,計算Message(W),并對于W的每一個關(guān)鍵字?jǐn)?shù)量為W —!的真子集Wx,向Node(Wx)發(fā)送Message(W),然后跳轉(zhuǎn)至步驟II;其中,Count (W)代表關(guān)鍵字集合W的精確索引中資源的數(shù)量,Message (W)代表來自Node (W) 節(jié)點發(fā)送的一個整數(shù)值。
6、 如權(quán)利要求5所述的基于精確索引的對等網(wǎng)絡(luò)搜索方法,其特征在于,步驟III 具體為判斷SS(W)中是否存在鍵值為W'的字典項,若存在,則更新SS(W)中鍵值為W'的字典 項為Mess灘e(W'),若不存在,則創(chuàng)建SS(W)[W' ]-Message(W'),然后跳轉(zhuǎn)至步驟II。
7、 如權(quán)利要求5所述的基于精確索引的對等網(wǎng)絡(luò)搜索方法,其特征在于,所述Message (W)的計算方法為 地,""^(" 。
8、 如權(quán)利要求5所述的基于精確索引的對等網(wǎng)絡(luò)搜索方法,其特征在于,所述步驟 II具體為-步驟III、節(jié)點Node (W)判斷是否接收到信息,若是則跳轉(zhuǎn)至步驟IIII,若否, 則重復(fù)步驟n1;歩驟IIn、節(jié)點Node a)判斷所接收到的信息是否是Message(W'),若是,則跳轉(zhuǎn) 至步驟III,若否,則跳轉(zhuǎn)至步驟IIIII;步驟IIIII、節(jié)點Node (W)判斷所接收到的信息是否是定時器計時已滿的信息,若是則跳轉(zhuǎn)到步驟iv,若否,則跳轉(zhuǎn)至步驟n[i。
9、 如權(quán)利要求1或5所述的基于精確索引的對等網(wǎng)絡(luò)搜索方法,其特征在于,所述 節(jié)點Node(W)執(zhí)行一種基于精確索引的維護(hù)方法,所述基于精確索引的維護(hù)方法,包含以下步 驟步驟l、節(jié)點Node(W)進(jìn)行判斷,收到關(guān)鍵字集合為W的資源擁有者向Node(W)發(fā)送的關(guān) 鍵字集合為W的資源加入網(wǎng)絡(luò)的信息,則跳轉(zhuǎn)至步驟2,收到關(guān)鍵字集合為W的資源擁有者向 Node(W)發(fā)送的關(guān)鍵字集合為W的資源退出網(wǎng)絡(luò)的信息,則跳轉(zhuǎn)至步驟3,沒有接收到信息或 收到的信息不是所述資源擁有者發(fā)送的關(guān)鍵字集合為W的資源加入或退出網(wǎng)絡(luò)的信息,則重 復(fù)步驟l;步驟2、節(jié)點Node(W)將關(guān)鍵字集合為W的資源加入到它所維護(hù)的W的精確索引中,然后 跳轉(zhuǎn)至步驟l;步驟3、節(jié)點Node(W)將關(guān)鍵字集合為W的資源從它所維護(hù)的W的精確索引中刪除,然后 跳轉(zhuǎn)至步驟l。
10、 如權(quán)利要求9所述的基于精確索引的對等網(wǎng)絡(luò)搜索方法,其特征在于,所述步驟 l具體為-步驟1-1、節(jié)點Node(W)判斷是否收到信息,若是,則跳轉(zhuǎn)至步驟1-2,若否,則重復(fù)步 驟H;步驟1-2、節(jié)點Node(W)判斷所收到的信息是否為關(guān)鍵字集合為W的資源擁有者向Node (W) 發(fā)送的關(guān)鍵字集合為W的資源加入網(wǎng)絡(luò)的信息,若是,則跳轉(zhuǎn)至步驟2,若否,則跳轉(zhuǎn)至步驟卜3;步驟l-3、節(jié)點Node(W)判斷所收到的信息是否為關(guān)鍵字集合為W的資源擁有者向Node (W) 發(fā)送的關(guān)鍵字集合為W的資源退出網(wǎng)絡(luò)的信息,若是,則跳轉(zhuǎn)至步驟3,若否,則跳轉(zhuǎn)至步驟 l一l。
全文摘要
本發(fā)明基于精確索引的對等網(wǎng)絡(luò)搜索方法方法,包括如下步驟設(shè)置集合Set={W};選定Set中一個關(guān)鍵字集合Wx,所述關(guān)鍵字集合Wx的Node(Wx)在本次搜索中沒有訪問過,訪問上述Node(Wx)獲取獲取I(Wx)和SS(Wx),將SS(Wx)中所有字典項的鍵值加入Set中,然后,將Wx從Set中刪除;判斷Set是否為空,若是,則接下一步,若否,則跳轉(zhuǎn)至步驟B;根據(jù)獲取的所有t個精確索引,計算結(jié)果R并返回所述結(jié)果R。本發(fā)明基于對等網(wǎng)絡(luò)、指向性與目標(biāo)性明確且能有效平衡節(jié)點負(fù)載。
文檔編號G06F17/30GK101650714SQ20081004177
公開日2010年2月17日 申請日期2008年8月15日 優(yōu)先權(quán)日2008年8月15日
發(fā)明者于光杰, 張大陸, 天 朱, 王志曉 申請人:同濟(jì)大學(xué)