一種建立微博索引的方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種建立微博索引的方法及裝置,所述方法應(yīng)用于分布式存儲(chǔ)網(wǎng)絡(luò)中的第一節(jié)點(diǎn),包括:從微博系統(tǒng)中實(shí)時(shí)獲取用戶發(fā)布的博文;根據(jù)博文與其他博文的轉(zhuǎn)發(fā)和/或回復(fù)關(guān)系并使用Twitter-LDA模型確定所述博文的主題;在與所述主題相對(duì)應(yīng)的索引結(jié)構(gòu)的底層建立所述博文的索引;判斷所述索引結(jié)構(gòu)的底層的索引數(shù)是否大于或等于預(yù)設(shè)閾值;如果是,將已存儲(chǔ)在所述索引結(jié)構(gòu)的底層的索引數(shù)據(jù)遷移至分布式存儲(chǔ)網(wǎng)絡(luò)中的第二節(jié)點(diǎn)。采用本發(fā)明的方法或裝置,可以提高建立索引的效率,從而使最新博文在其發(fā)表后短時(shí)間內(nèi)變?yōu)榭伤阉鳌?br>
【專利說明】—種建立微博索引的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)索引【技術(shù)領(lǐng)域】,更具體地說,涉及一種建立微博索引的方法及裝置。
【背景技術(shù)】
[0002]微博,是微型博客的簡(jiǎn)稱,是一種基于用戶關(guān)系分享、傳播以及獲取信息的平臺(tái)。通過微博系統(tǒng)的實(shí)時(shí)搜索服務(wù),用戶可以快速得到新鮮的第一手草根信息,第一時(shí)間了解國內(nèi)外事件。而實(shí)時(shí)搜索服務(wù)實(shí)現(xiàn)過程中,為了能夠快速的獲取實(shí)時(shí)微博的信息,需要對(duì)微博系統(tǒng)中的博文建立索弓I。
[0003]目前,微博系統(tǒng)中建立索引的過程是這樣的:只要有新博文進(jìn)入微博系統(tǒng),就為該博文建立一條索引,所有博文的索引以簡(jiǎn)單集合形式存在。
[0004]發(fā)明人經(jīng)研究發(fā)現(xiàn),微博系統(tǒng)中實(shí)時(shí)產(chǎn)生的博文數(shù)量非常龐大,逐一為這些博文建立索引相當(dāng)耗時(shí),根本無法讓最新的博文在其發(fā)表之后的幾秒之內(nèi)就變?yōu)榭伤阉?;而且,由于微博系統(tǒng)中本身的博文數(shù)據(jù)量很大,故博文索引的數(shù)據(jù)量也不可小覷,如此龐大的數(shù)據(jù)對(duì)存儲(chǔ)設(shè)備來說是極大的負(fù)荷,存儲(chǔ)設(shè)備的讀寫速度會(huì)受影響,為新博文建立索引時(shí)速度會(huì)很慢,無法滿足建立博文索引的實(shí)時(shí)性。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明提供一種建立微博索引的方法及裝置,能夠快速的對(duì)最新博文建立索引,使最新博文在其發(fā)表后短時(shí)間內(nèi)變?yōu)榭伤阉鳌?br>
[0006]為了實(shí)現(xiàn)上述目的,現(xiàn)提出的方案如下:
[0007]一種建立微博索引的方法,所述方法應(yīng)用于分布式存儲(chǔ)網(wǎng)絡(luò)中的第一節(jié)點(diǎn),包括:
[0008]從微博系統(tǒng)中實(shí)時(shí)獲取用戶發(fā)布的博文;
[0009]當(dāng)所述博文是對(duì)其他博文的轉(zhuǎn)發(fā)和/或回復(fù)時(shí),將所述博文的主題確定為所述博文所回復(fù)和/或所轉(zhuǎn)發(fā)的原始博文的主題;
[0010]當(dāng)所述博文與其他博文無轉(zhuǎn)發(fā)和/或回復(fù)關(guān)系時(shí),使用Twitter-LDA模型確定所述博文的主題;
[0011]在與所述主題相對(duì)應(yīng)的索引結(jié)構(gòu)的底層建立所述博文的索引;
[0012]判斷所述索引結(jié)構(gòu)的底層的索引數(shù)是否大于或等于預(yù)設(shè)閾值;
[0013]如果是,則將已存儲(chǔ)在所述索引結(jié)構(gòu)的底層的索引數(shù)據(jù)遷移至分布式存儲(chǔ)網(wǎng)絡(luò)中的第二節(jié)點(diǎn)。
[0014]上述方法,所述從微博系統(tǒng)中實(shí)時(shí)獲取用戶發(fā)布的博文之后,還包括:
[0015]確定發(fā)布所述博文的用戶;
[0016]判斷所述用戶是否為惡意用戶,如果否,才執(zhí)行確定所述博文的主題的步驟。
[0017]上述方法,建立所述索引之后,還包括:[0018]獲取所述微博系統(tǒng)中的主節(jié)點(diǎn)下發(fā)的搜索任務(wù);所述搜索任務(wù)是由所述主節(jié)點(diǎn)根據(jù)用戶在搜索操作中給定的搜索關(guān)鍵字對(duì)應(yīng)的主題所分配的;
[0019]在所述索引結(jié)構(gòu)的底層搜索與所述關(guān)鍵字相匹配的索引,得到搜索結(jié)果;
[0020]將所述搜索結(jié)果發(fā)送至所述主節(jié)點(diǎn),以便所述主節(jié)點(diǎn)綜合所述第一節(jié)點(diǎn)的搜索結(jié)果和所述第二節(jié)點(diǎn)的搜索結(jié)果得到所述主題的搜索結(jié)果,綜合所有主題的搜索結(jié)果,得到最終搜索結(jié)果。
[0021]上述方法,優(yōu)選地,所述綜合所有主題的搜索結(jié)果之前還包括:對(duì)所述所有主題的排序結(jié)果進(jìn)行排序。
[0022]一種建立微博索引的裝置,所述裝置應(yīng)用于分布式存儲(chǔ)網(wǎng)絡(luò)中的第一節(jié)點(diǎn),包括:
[0023]博文獲取模塊:用于從微博系統(tǒng)中實(shí)時(shí)獲取用戶發(fā)布的博文;
[0024]主題確定模塊:用于當(dāng)所述博文是對(duì)其他博文的轉(zhuǎn)發(fā)和/或回復(fù)時(shí),將所述博文的主題確定為所述博文所回復(fù)和/或所轉(zhuǎn)發(fā)的原始博文的主題,當(dāng)所述博文與其他博文無轉(zhuǎn)發(fā)和/或回復(fù)關(guān)系時(shí),使用Twitter-LDA模型確定所述博文的主題;
[0025]索引建立模塊:用于在與所述主題相對(duì)應(yīng)的索引結(jié)構(gòu)的底層建立所述博文的索弓I ;
[0026]閾值判斷模塊:用于判斷所述索引結(jié)構(gòu)的底層的索引數(shù)是否大于或等于預(yù)設(shè)閾值,如果是,觸發(fā)索引遷移模塊;
[0027]索引遷移模塊:用于將已存儲(chǔ)在所述索引結(jié)構(gòu)的底層的索引數(shù)據(jù)遷移至分布式存儲(chǔ)網(wǎng)絡(luò)中的第二節(jié)點(diǎn)。
[0028]上述裝置,優(yōu)選地,所述博文獲取模塊從微博系統(tǒng)中實(shí)時(shí)獲取用戶發(fā)布的博文之后還包括:
[0029]用戶確定模塊,用于確定發(fā)布所述博文的用戶;
[0030]用戶判斷模塊,用于判斷所述用戶是否為惡意用戶,如果否,觸發(fā)主題確定模塊。
[0031]上述裝置,優(yōu)選地,所述索引建立模塊建立所述索引之后還包括:
[0032]任務(wù)獲取模塊,用于獲取所述微博系統(tǒng)中的主節(jié)點(diǎn)下發(fā)的搜索任務(wù);所述搜索任務(wù)是由所述主節(jié)點(diǎn)根據(jù)用戶在搜索操作中給定的搜索關(guān)鍵字對(duì)應(yīng)的主題所分配的;
[0033]搜索執(zhí)行模塊,用于在所述索引結(jié)構(gòu)的底層搜索與所述關(guān)鍵字相匹配的索引,得到搜索結(jié)果;
[0034]結(jié)果發(fā)送模塊,用于將所述搜索結(jié)果發(fā)送至所述主節(jié)點(diǎn),以便所述主節(jié)點(diǎn)綜合所述第一節(jié)點(diǎn)和所述第二節(jié)點(diǎn)的搜索結(jié)果得到所述主題的搜索結(jié)果,綜合所有主題的搜索結(jié)果,得到最終搜索結(jié)果。
[0035]上述裝置,優(yōu)選地,所述結(jié)果發(fā)送模塊綜合所述所有主題的搜索結(jié)果之前還包括:
[0036]排序模塊,用于對(duì)所述所有主題的搜索結(jié)果進(jìn)行排序。
[0037]本實(shí)施例公開的建立微博索引的方法,依據(jù)博文的主題,在與主題對(duì)應(yīng)的索引結(jié)構(gòu)中建立博文的索引,微博系統(tǒng)的內(nèi)存中僅保存主題與索引結(jié)構(gòu)的映射關(guān)系,映射關(guān)系的數(shù)據(jù)量相對(duì)博文索引量來說較小,各個(gè)主題的索引結(jié)構(gòu)分布式存儲(chǔ)于多個(gè)節(jié)點(diǎn)上,這樣,屬于不同主題的多個(gè)博文進(jìn)入微博系統(tǒng)后可由多個(gè)節(jié)點(diǎn)同時(shí)處理,加快了索引建立速度;而且,所述博文的索引由所述索引結(jié)構(gòu)的第一節(jié)點(diǎn)建立在所述索引結(jié)構(gòu)的底層,當(dāng)所述底層中索引數(shù)超過預(yù)設(shè)閾值時(shí),將所述底層中索引數(shù)據(jù)移至所述索引結(jié)構(gòu)的其他層,即交由所述索引結(jié)構(gòu)的第二節(jié)點(diǎn)維護(hù),也就是說,博文的索引在索引結(jié)構(gòu)中分層存儲(chǔ),索引結(jié)構(gòu)的底層存儲(chǔ)的都是為最新進(jìn)入微博系統(tǒng)的博文建立的索引,這樣就不會(huì)出現(xiàn)存儲(chǔ)設(shè)備負(fù)荷過大的問題,保證了索引的快速建立;從而使最新博文在其發(fā)表后短時(shí)間內(nèi)變?yōu)榭伤阉鳌?br>
【專利附圖】
【附圖說明】
[0038]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0039]圖1為本發(fā)明實(shí)施例公開的一種建立微博索引方法的流程圖;
[0040]圖2為本發(fā)明實(shí)施例公開的一種索引結(jié)構(gòu)工作過程示意圖;
[0041]圖3為本發(fā)明實(shí)施例公開的一種基于索引結(jié)構(gòu)搜索博文的流程圖;
[0042]圖4為本發(fā)明實(shí)施例公開的一種建立微博索引裝置的結(jié)構(gòu)示意圖;
[0043]圖5為本發(fā)明實(shí)施例公開的一種基于索引結(jié)構(gòu)搜索博文裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0044]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0045]本發(fā)明實(shí)施例一公開了一種建立微博索引的方法,參見圖1所示,所述方法應(yīng)用于分布式存儲(chǔ)網(wǎng)絡(luò)中的第一節(jié)點(diǎn),包括步驟:
[0046]SlOl:從微博系統(tǒng)中實(shí)時(shí)獲取用戶發(fā)布的博文;
[0047]任意注冊(cè)用戶只要發(fā)布博文,博文就會(huì)進(jìn)入微博系統(tǒng),也就是說博文系統(tǒng)中囊括了所有注冊(cè)用戶發(fā)布的所有博文。分布式存儲(chǔ)網(wǎng)絡(luò)中的第一節(jié)點(diǎn),也就是為博文建立索引的節(jié)點(diǎn),其首先要從微博系統(tǒng)中實(shí)時(shí)獲取用戶發(fā)布的博文,這意味著博文一進(jìn)入到微博系統(tǒng),就會(huì)被所述第一節(jié)點(diǎn)獲取到,第一節(jié)點(diǎn)當(dāng)前獲取到的博文是最新的博文。
[0048]S102:確定所述博文的主題:
[0049]當(dāng)所述博文是對(duì)其他博文的轉(zhuǎn)發(fā)和/或回復(fù)時(shí),將所述博文的主題確定為所述博文所回復(fù)和/或所轉(zhuǎn)發(fā)的原始博文的主題;
[0050]當(dāng)所述博文與其他博文無轉(zhuǎn)發(fā)和/或回復(fù)關(guān)系時(shí),使用Twitter-LDA模型確定所述博文的主題;
[0051]具體地,微博系統(tǒng)中的博文存在著回復(fù)以及轉(zhuǎn)發(fā)等關(guān)系,例如,用戶A在自己的博文中使用了“RT0B”或“via@B”,則說明用戶A的這條博文是轉(zhuǎn)發(fā)用戶B的,而如果用戶A發(fā)布的博文中包括“腿”,則說明用戶A的這條博文是對(duì)用戶B的博文的回復(fù),可想而知,轉(zhuǎn)發(fā)其他用戶博文或回復(fù)其他用戶博文的博文,其主題與其轉(zhuǎn)發(fā)/回復(fù)的博文主題應(yīng)該是一致的。具體實(shí)施過程中,按照微博系統(tǒng)中博文的回復(fù)以及轉(zhuǎn)發(fā)關(guān)系,微博系統(tǒng)中以樹的結(jié)構(gòu)存儲(chǔ)所有博文,確定主題時(shí),屬于同一棵微博樹的所有博文的主題與該微博樹的根節(jié)點(diǎn)博文的主題一致,也就是原始博文的主題。當(dāng)然,其他實(shí)施例中還可以以其他便于博文主題確定的結(jié)構(gòu)存儲(chǔ)博文,例如無向圖、隊(duì)列等。
[0052]對(duì)于那些與其他博文沒有轉(zhuǎn)發(fā)和/或回復(fù)關(guān)系的原始博文,使用Twitter-LDA模型確定博文主題,該模型下,一條博文有一個(gè)確定的主題。使用該模型確定博文主題時(shí),主要包括兩個(gè)階段:離線訓(xùn)練階段和在線推斷階段,離線訓(xùn)練階段目的是得到一些全局統(tǒng)計(jì)參數(shù),例如詞-主題矩陣、背景詞的主題向量以及背景詞和主題詞的分布,在線推斷階段根據(jù)離線訓(xùn)練階段得到的參數(shù)對(duì)每個(gè)博文的主題進(jìn)行推斷,從而得出博文的主題。當(dāng)然,其他實(shí)施例中還可以以其他基于統(tǒng)計(jì)學(xué)分類的模型確定博文主題。
[0053]S103:在與所述主題相對(duì)應(yīng)的索引結(jié)構(gòu)的底層建立所述博文的索引;
[0054]這里,每個(gè)主題都有一個(gè)獨(dú)立的索引結(jié)構(gòu),索引結(jié)構(gòu)由一系列大小不同的倒排索引組成,分層存儲(chǔ),每層存儲(chǔ)的索引量都有限制,即每層的索引量不能超過給定的閾值,而且高一層的閾值是第一層閾值的倍數(shù),本實(shí)施例中設(shè)為2倍,屬于同一主題的博文的索引均位于與該主題對(duì)應(yīng)的索引結(jié)構(gòu)中。另外,每個(gè)主題的索引結(jié)構(gòu)以分布式方式存儲(chǔ)于不同的節(jié)點(diǎn)上,微博系統(tǒng)的內(nèi)存上會(huì)保存主題與索引結(jié)構(gòu)的映射關(guān)系,在步驟S102確定了獲取的博文的主題之后,微博系統(tǒng)的主節(jié)點(diǎn)會(huì)根據(jù)主題與索引結(jié)構(gòu)的映射關(guān)系,將博文發(fā)送到與存儲(chǔ)其主題對(duì)應(yīng)的索引結(jié)構(gòu)的節(jié)點(diǎn)上進(jìn)行處理,而該節(jié)點(diǎn)又包括第一節(jié)點(diǎn)和第二節(jié)點(diǎn),第一節(jié)點(diǎn)主要負(fù)責(zé)建立博文的索引,其在索引結(jié)構(gòu)的底層建立所述博文的索引。
[0055]S104:判斷所述索引結(jié)構(gòu)的底層的索引數(shù)是否大于或等于預(yù)設(shè)閾值;如果是,則執(zhí)行步驟S105 ;
[0056]S105:將已存儲(chǔ)在所述索引結(jié)構(gòu)的底層的索引數(shù)據(jù)遷移至分布式存儲(chǔ)網(wǎng)絡(luò)中的第二節(jié)點(diǎn)。
[0057]這里,當(dāng)所述索引結(jié)構(gòu)的低一層索引的容量已經(jīng)達(dá)到該層容量閾值時(shí),如果仍然有新的索引加入,此時(shí)就需要將低一層的索引數(shù)據(jù)合并到高一層的索引數(shù)據(jù)中。第二節(jié)點(diǎn)承擔(dān)了索引結(jié)構(gòu)底層之外的其他層索引數(shù)據(jù)的維護(hù)工作,當(dāng)所述索引結(jié)構(gòu)的底層的索引數(shù)大于或等于預(yù)設(shè)閾值時(shí),第一節(jié)點(diǎn)會(huì)將已存儲(chǔ)在所述索引結(jié)構(gòu)的底層的索引數(shù)據(jù)遷移至第二節(jié)點(diǎn)中,當(dāng)除底層外低一層索引的索引數(shù)大于或等于該層的預(yù)設(shè)閾值時(shí),第二節(jié)點(diǎn)會(huì)將該層的索引數(shù)據(jù)復(fù)制到該層的上一層,實(shí)現(xiàn)索引數(shù)據(jù)的合并,其它層索引的維護(hù)工作以此類推。
[0058]假設(shè)有一個(gè)主題的索引結(jié)構(gòu),用L來表示索引結(jié)構(gòu)的索引層次,索引結(jié)構(gòu)底層的容量用m來表示,則在該索引結(jié)構(gòu)中第i層的容量為2im,每個(gè)主題索引的底層用O層來表示,所有新加入系統(tǒng)的博文的索引都建立在O層,而其他層(LSI)通過合并低一層索引而形成??梢姡瑢儆谠撝黝}的最新的博文的索引存儲(chǔ)于索引結(jié)構(gòu)的底層,該層的索引量不大,因此能夠在極小的更新代價(jià)下為獲取到的最新博文建立索引,從而使新博文能夠及時(shí)可搜索。
[0059]接下來將用一個(gè)簡(jiǎn)單的實(shí)例來對(duì)索引結(jié)構(gòu)的具體工作過程進(jìn)行簡(jiǎn)單的介紹,如圖
2所示。假設(shè)索引結(jié)構(gòu)的索引層次L = 3,高一層索引容量閾值為下一層閾值的t = 2倍,圖2中的圓邊矩陣就是底層索引容量m的大小。首先,在第一階段Stagel,第一節(jié)點(diǎn)在底層LO層中創(chuàng)建一個(gè)索引文件101,而隨著新博文的加入索引將會(huì)逐漸增大直到其大小達(dá)到閾值m(在第i階段Stagei)。此時(shí)再有新的博文加入則分別在底層LO層以及底層的上一層LI層中創(chuàng)建新的索引文件102、111,并將IOl的索引數(shù)據(jù)合并到Ill中,然后再將IOl刪除。直到第m階段Stage m, 102的索引文件也達(dá)到閾值了,則在第m+1階段Stage m+1中,LO層需要?jiǎng)?chuàng)建一個(gè)新的索引文件103,并且還需要將102中的數(shù)據(jù)合并到LI層的Ill索引文件中。到第η階段Stage η時(shí),103也已經(jīng)達(dá)到了閾值,此時(shí)第η+1階段Stage n+1中需要在LO層中創(chuàng)建新的索引文件104用于吸收新博文的索引;同時(shí)需要將103的索引合并到LI層中,而此時(shí)LI層的Ill容量也已經(jīng)達(dá)到了閾值,則需要?jiǎng)?chuàng)建更高一層的索引,即需要在LI層的上一層L2層中創(chuàng)建121索引文件,并將Ill的文件合并到121中;然后需要在LI中創(chuàng)建新的索引文件112,并將103的索引文件合并到112中;最后再將103以及Ill的索引文件刪除。最后整個(gè)索引結(jié)構(gòu)中保存的索引文件只有104、112以及121三個(gè)。
[0060]另外,可選地,所述從微博系統(tǒng)中實(shí)時(shí)獲取用戶發(fā)布的博文之后,還包括對(duì)博文過濾過程,博文過濾的目的是把那些不希望處理的垃圾博文過濾掉,以便提高處理速度,具體地,首先確定發(fā)布所述博文的用戶;然后判斷所述用戶是否為惡意用戶,如果否,才執(zhí)行確定所述博文的主題的步驟。
[0061]上述博文過濾的原則是:將惡意用戶發(fā)布的博文都定性為不希望處理的垃圾博文。因而,首先確定步驟SlOl中獲取到的博文是哪個(gè)用戶發(fā)布的,然后判斷發(fā)布所述博文的用戶是否為惡意用戶,如果是,則所述博文為垃圾博文,不再對(duì)所述博文進(jìn)行后續(xù)處理,如果否,對(duì)博文執(zhí)行后續(xù)索引建立操作。實(shí)際應(yīng)用中,可以將發(fā)送過違規(guī)言論的用戶或者重復(fù)發(fā)送無意義信息的用戶判定為惡意用戶。
[0062]本實(shí)施例公開的建立微博索引的方法,依據(jù)博文的主題,在與主題對(duì)應(yīng)的索引結(jié)構(gòu)中建立博文的索引,微博系統(tǒng)的內(nèi)存中僅保存主題與索引結(jié)構(gòu)的映射關(guān)系,映射關(guān)系的數(shù)據(jù)量相對(duì)博文索引量來說較小,各個(gè)主題的索引結(jié)構(gòu)分布式存儲(chǔ)于多個(gè)節(jié)點(diǎn)上,這樣,屬于不同主題的多個(gè)博文進(jìn)入微博系統(tǒng)后可由多個(gè)節(jié)點(diǎn)同時(shí)處理,加快了索引建立速度;而且,所述博文的索引由所述索引結(jié)構(gòu)的第一節(jié)點(diǎn)建立在所述索引結(jié)構(gòu)的底層,當(dāng)所述底層中索引數(shù)超過預(yù)設(shè)閾值時(shí),將所述底層中索引數(shù)據(jù)移至所述索引結(jié)構(gòu)的其他層,即交由所述索引結(jié)構(gòu)的第二節(jié)點(diǎn)維護(hù),也就是說,博文的索引在索引結(jié)構(gòu)中分層存儲(chǔ),索引結(jié)構(gòu)的底層存儲(chǔ)的都是為最新進(jìn)入微博系統(tǒng)的博文建立的索引,這樣就不會(huì)出現(xiàn)第一節(jié)點(diǎn)的存儲(chǔ)負(fù)荷過大的問題,保證了索引的快速建立。
[0063]建立博文索引,形成這種與博文主題對(duì)應(yīng)的分布式多層索引結(jié)構(gòu)之后,利用該索引結(jié)構(gòu)搜索博文的具體步驟參見圖3,其示出了本發(fā)明實(shí)施例二公開的一種基于索引結(jié)構(gòu)搜索博文的流程,該流程,具體包括:
[0064]S301:獲取所述微博系統(tǒng)中的主節(jié)點(diǎn)下發(fā)的搜索任務(wù);所述搜索任務(wù)是由所述主節(jié)點(diǎn)根據(jù)用戶在搜索操作中給定的搜索關(guān)鍵字對(duì)應(yīng)的主題所分配的;
[0065]其中,微博系統(tǒng)的主節(jié)點(diǎn)在接收到用戶的搜索操作后,推斷用戶搜索操作中給定的搜索關(guān)鍵字的主題,用戶提供的搜索關(guān)鍵字一般都是很短的,因此如果只將其分類到一個(gè)特定的主題的話是不準(zhǔn)確的,本實(shí)施例中使用傳統(tǒng)的LDA模型作為關(guān)鍵字的主題分類模型,LDA分類模型會(huì)返回一個(gè)主題概率的向量,通過該主題概率向量就可以知道該關(guān)鍵字可能涉及到的主題,這樣,一個(gè)搜索關(guān)鍵字至少與一個(gè)主題相對(duì)應(yīng)。確認(rèn)了關(guān)鍵字的主題之后,主節(jié)點(diǎn)會(huì)下發(fā)搜索任務(wù)到存儲(chǔ)與主題相對(duì)應(yīng)的索引結(jié)構(gòu)的節(jié)點(diǎn)中,所述主節(jié)點(diǎn)下發(fā)的搜索任務(wù)由所述索引結(jié)構(gòu)的第一節(jié)點(diǎn)獲取,同時(shí)所述索引結(jié)構(gòu)的第二節(jié)點(diǎn)也會(huì)獲取到所述主節(jié)點(diǎn)下發(fā)的搜索任務(wù)??梢?,搜索操作以分布式操作的形式來完成,由多個(gè)節(jié)點(diǎn)共同完成搜索請(qǐng)求。
[0066]S302:在所述索引結(jié)構(gòu)的底層搜索與所述關(guān)鍵字相匹配的索引,得到搜索結(jié)果;
[0067]其中,所述索弓丨結(jié)構(gòu)的第一節(jié)點(diǎn)在所述索弓丨結(jié)構(gòu)的底層進(jìn)行搜索,所述索引結(jié)構(gòu)的第二節(jié)點(diǎn)在所述索引結(jié)構(gòu)的其它層進(jìn)行搜索,這樣,第二節(jié)點(diǎn)分擔(dān)了第一節(jié)點(diǎn)的工作,底層索引數(shù)據(jù)量相對(duì)其他層來說較小,且存儲(chǔ)的索引是最新博文的索引,第一節(jié)點(diǎn)只負(fù)責(zé)在底層進(jìn)行搜索,搜索速度快,不會(huì)影響索引創(chuàng)建以及更新的效率。另外值得一提的是,本發(fā)明實(shí)施例中的索引結(jié)構(gòu)是具有時(shí)間順序的,存儲(chǔ)在高層的索引比低層的索引的建立時(shí)間要早,并且索引結(jié)構(gòu)的每層上記錄有該層中索引建立的起始時(shí)間戳,這樣,更有利于針對(duì)特定時(shí)間范圍的查找。
[0068]S303:將所述搜索結(jié)果發(fā)送至所述主節(jié)點(diǎn),以便所述主節(jié)點(diǎn)綜合所述第一節(jié)點(diǎn)的搜索結(jié)果和所述第二節(jié)點(diǎn)的搜索結(jié)果得到所述主題的搜索結(jié)果,綜合所有主題的搜索結(jié)果,得到最終搜索結(jié)果。
[0069]這里,所述索引結(jié)構(gòu)的第一節(jié)點(diǎn)和第二節(jié)點(diǎn)得到針對(duì)所述索引結(jié)構(gòu)的搜索結(jié)構(gòu)后,會(huì)根據(jù)排名原則對(duì)與該主題對(duì)應(yīng)的搜索結(jié)果進(jìn)行排序,然后將搜索結(jié)果發(fā)送至所述微博系統(tǒng)的主節(jié)點(diǎn)。所述微博系統(tǒng)的主節(jié)點(diǎn)首先會(huì)綜合與所述主題對(duì)應(yīng)的第一節(jié)點(diǎn)的搜索結(jié)果和第二節(jié)點(diǎn)的搜索結(jié)果,進(jìn)而類似地,綜合與用戶搜索關(guān)鍵字對(duì)應(yīng)的所有主題的搜索結(jié)果,得出最終完整的搜索結(jié)果。微博系統(tǒng)的主節(jié)點(diǎn)綜合了所有主題的搜索結(jié)果之后,以層次結(jié)構(gòu)的形式將搜索結(jié)果(也就是搜索到的博文)展現(xiàn)出來,尤其是對(duì)那些原本就屬于同一微博樹的博文,這樣能夠更加清晰的展現(xiàn)一些重要事件或者突發(fā)事件的演化和發(fā)展過程。 [0070]可選地,所述綜合所有主題的搜索結(jié)果之前還包括對(duì)所述所有主題的排序結(jié)果進(jìn)行排序的步驟。
[0071]本實(shí)施例中采用的排序算法考慮了博文的時(shí)間、用戶的權(quán)威性和主題的受歡迎度,其排序表達(dá)式為:
[0072]Rank (d, q) = ω j.sig (d.user) + ω 2.sim (d, q) + ω 3.fresh (tsd, tsq)
[0073]其中:
[0074]g^+g^+g^ = I 且 ω” ω2, ω 3>0 ;
[0075]sig (d.user)表示發(fā)布博文d的用戶的權(quán)威度;
[0076]sim(d, q)表示博文d與查詢處理q的相似度;
[0077]fresh (tsd, tsq)表示基于博文d以及查詢q的時(shí)間戳來判斷d在查詢q中的新鮮度。
[0078]上述實(shí)施例中表明,本發(fā)明公開的建立微博索引的方法能夠?qū)崟r(shí)的對(duì)微博系統(tǒng)中的博文建立索引,通過推斷用戶給定的搜索關(guān)鍵字的主題,根據(jù)所建立的索引結(jié)構(gòu)的特點(diǎn),分布式的在多個(gè)節(jié)點(diǎn)上執(zhí)行搜索任務(wù),確保在搜索處理過程中快速、準(zhǔn)確的將用戶需要的數(shù)據(jù)返回。
[0079]本發(fā)明實(shí)施例三公開了一種建立微博索引的裝置,參見圖4所示,所述裝置應(yīng)用于分布式存儲(chǔ)網(wǎng)絡(luò)中的第一節(jié)點(diǎn),包括:
[0080]博文獲取模塊401:用于從微博系統(tǒng)中實(shí)時(shí)獲取用戶發(fā)布的博文;[0081]主題確定模塊402:用于當(dāng)所述博文是對(duì)其他博文的轉(zhuǎn)發(fā)和/或回復(fù)時(shí),將所述博文的主題確定為所述博文所回復(fù)和/或所轉(zhuǎn)發(fā)的原始博文的主題,當(dāng)所述博文與其他博文無轉(zhuǎn)發(fā)和/或回復(fù)關(guān)系時(shí),使用Twitter-LDA模型確定所述博文的主題;
[0082]索引建立模塊403:用于在與所述主題相對(duì)應(yīng)的索引結(jié)構(gòu)的底層建立所述博文的索引;
[0083]閾值判斷模塊404:用于判斷所述索引結(jié)構(gòu)的底層的索引數(shù)是否大于或等于預(yù)設(shè)閾值,如果是,觸發(fā)索引遷移模塊405 ;
[0084]索引遷移模塊405:用于將已存儲(chǔ)在所述索引結(jié)構(gòu)的底層的索引數(shù)據(jù)遷移至分布式存儲(chǔ)網(wǎng)絡(luò)中的第二節(jié)點(diǎn)。
[0085]其中,可選地,所述博文獲取模塊從微博系統(tǒng)中實(shí)時(shí)獲取用戶發(fā)布的博文之后還包括博文過濾模塊406:
[0086]用戶確定模塊461,用于確定發(fā)布所述博文的用戶;
[0087]用戶判斷模塊461,用于判斷所述用戶是否為惡意用戶,如果否,觸發(fā)主題確定模塊 402。
[0088]本實(shí)施例公開的建立微博索引的裝置,依據(jù)博文的主題,在與主題對(duì)應(yīng)的索引結(jié)構(gòu)中建立博文的索引,屬于不同主題的多個(gè)博文進(jìn)入微博系統(tǒng)后可由多個(gè)節(jié)點(diǎn)同時(shí)處理,加快了索引建立速度;而且,博文的索引在索引結(jié)構(gòu)中分層存儲(chǔ),索引結(jié)構(gòu)的底層存儲(chǔ)的都是為最新進(jìn)入微博系統(tǒng)的博文建立的索引,這樣就不會(huì)出現(xiàn)存儲(chǔ)設(shè)備負(fù)荷過大的問題,保證了索引的快速建立。
[0089]本發(fā)明實(shí)施例四公開了一種建立微博索引的裝置,參見圖5所示,其示出了本發(fā)明實(shí)施例公開的一種基于索引結(jié)構(gòu)搜索博文的裝置結(jié)構(gòu)示意圖,具體地,建立微博索引的裝置還包括:
[0090]任務(wù)獲取模塊501,用于獲取所述微博系統(tǒng)中的主節(jié)點(diǎn)下發(fā)的搜索任務(wù);所述搜索任務(wù)是由所述主節(jié)點(diǎn)根據(jù)用戶在搜索操作中給定的搜索關(guān)鍵字對(duì)應(yīng)的主題所分配的;
[0091]搜索執(zhí)行模塊502,用于在所述索引結(jié)構(gòu)的底層搜索與所述關(guān)鍵字相匹配的索引,得到搜索結(jié)果;
[0092]結(jié)果發(fā)送模塊503,用于將所述搜索結(jié)果發(fā)送至所述主節(jié)點(diǎn),以便所述主節(jié)點(diǎn)綜合所述第一節(jié)點(diǎn)和所述第二節(jié)點(diǎn)的搜索結(jié)果得到所述主題的搜索結(jié)果,綜合所有主題的搜索結(jié)果,得到最終搜索結(jié)果。
[0093]其中,可選地,所述結(jié)果發(fā)送模塊503綜合所述所有主題的搜索結(jié)果之前還包括:
[0094]排序模塊504,用于對(duì)所述所有主題的搜索結(jié)果進(jìn)行排序。
[0095]上述實(shí)施例中表明,本發(fā)明公開的建立微博索引的裝置能夠?qū)崟r(shí)的對(duì)微博系統(tǒng)中的博文建立索引,通過推斷用戶給定的搜索關(guān)鍵字的主題,根據(jù)所建立的索引結(jié)構(gòu)的特點(diǎn),分布式的在多個(gè)節(jié)點(diǎn)上執(zhí)行搜索任務(wù),確保在搜索處理過程中快速、準(zhǔn)確的將用戶需要的數(shù)據(jù)返回。
[0096]最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
[0097]本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。
[0098]對(duì)所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范 圍。
【權(quán)利要求】
1.一種建立微博索引的方法,其特征在于,所述方法應(yīng)用于分布式存儲(chǔ)網(wǎng)絡(luò)中的第一節(jié)點(diǎn),包括: 從微博系統(tǒng)中實(shí)時(shí)獲取用戶發(fā)布的博文; 當(dāng)所述博文是對(duì)其他博文的轉(zhuǎn)發(fā)和/或回復(fù)時(shí),將所述博文的主題確定為所述博文所回復(fù)和/或所轉(zhuǎn)發(fā)的原始博文的主題; 當(dāng)所述博文與其他博文無轉(zhuǎn)發(fā)和/或回復(fù)關(guān)系時(shí),使用Twitter-LDA模型確定所述博文的主題; 在與所述主題相對(duì)應(yīng)的索引結(jié)構(gòu)的底層建立所述博文的索引; 判斷所述索引結(jié)構(gòu)的底層的索引數(shù)是否大于或等于預(yù)設(shè)閾值; 如果是,則將已存儲(chǔ)在所述索引結(jié)構(gòu)的底層的索引數(shù)據(jù)遷移至分布式存儲(chǔ)網(wǎng)絡(luò)中的第二節(jié)點(diǎn)。
2.如權(quán)利要求1所述的方法,其特征在于,所述從微博系統(tǒng)中實(shí)時(shí)獲取用戶發(fā)布的博文之后,還包括: 確定發(fā)布所述博文的用戶; 判斷所述用戶是否為惡意用戶,如果否,才執(zhí)行確定所述博文的主題的步驟。
3.如權(quán)利要求1所述的方法,其特征在于,建立所述索引之后,還包括: 獲取所述微博系統(tǒng)中的主節(jié)點(diǎn)下發(fā)的搜索任務(wù);所述搜索任務(wù)是由所述主節(jié)點(diǎn)根據(jù)用戶在搜索操作中給定的搜索關(guān)鍵字對(duì)應(yīng)的主題所分配的; 在所述索引結(jié)構(gòu)的底層搜索與所述關(guān)鍵字相匹配的索引,得到搜索結(jié)果; 將所述搜索結(jié)果發(fā)送至所述主節(jié)點(diǎn),以便所述主節(jié)點(diǎn)綜合所述第一節(jié)點(diǎn)的搜索結(jié)果和所述第二節(jié)點(diǎn)的搜索結(jié)果得到所述主題的搜索結(jié)果,綜合所有主題的搜索結(jié)果,得到最終搜索結(jié)果。
4.如權(quán)利要求3所述的方法,其特征在于,所述綜合所有主題的搜索結(jié)果之前還包括:對(duì)所述所有主題的排序結(jié)果進(jìn)行排序。
5.一種建立微博索引的裝置,其特征在于,所述裝置應(yīng)用于分布式存儲(chǔ)網(wǎng)絡(luò)中的第一節(jié)點(diǎn),包括: 博文獲取模塊:用于從微博系統(tǒng)中實(shí)時(shí)獲取用戶發(fā)布的博文; 主題確定模塊:用于當(dāng)所述博文是對(duì)其他博文的轉(zhuǎn)發(fā)和/或回復(fù)時(shí),將所述博文的主題確定為所述博文所回復(fù)和/或所轉(zhuǎn)發(fā)的原始博文的主題,當(dāng)所述博文與其他博文無轉(zhuǎn)發(fā)和/或回復(fù)關(guān)系時(shí),使用Twitter-LDA模型確定所述博文的主題; 索引建立模塊:用于在與所述主題相對(duì)應(yīng)的索引結(jié)構(gòu)的底層建立所述博文的索引;閾值判斷模塊:用于判斷所述索引結(jié)構(gòu)的底層的索引數(shù)是否大于或等于預(yù)設(shè)閾值,如果是,觸發(fā)索引遷移模塊; 索引遷移模塊:用于將已存儲(chǔ)在所述索引結(jié)構(gòu)的底層的索引數(shù)據(jù)遷移至分布式存儲(chǔ)網(wǎng)絡(luò)中的第二節(jié)點(diǎn)。
6.如權(quán)利要求5所述的裝置,其特征在于,所述博文獲取模塊從微博系統(tǒng)中實(shí)時(shí)獲取用戶發(fā)布的博文之后還包括: 用戶確定模塊,用于確定發(fā)布所述博文的用戶; 用戶判斷模塊,用于判斷所述用戶是否為惡意用戶,如果否,觸發(fā)主題確定模塊。
7.如權(quán)利要求5所述的裝置,其特征在于,所述索引建立模塊建立所述索引之后還包括: 任務(wù)獲取模塊,用于獲取所述微博系統(tǒng)中的主節(jié)點(diǎn)下發(fā)的搜索任務(wù);所述搜索任務(wù)是由所述主節(jié)點(diǎn)根據(jù)用戶在搜索操作中給定的搜索關(guān)鍵字對(duì)應(yīng)的主題所分配的; 搜索執(zhí)行模塊,用于在所述索引結(jié)構(gòu)的底層搜索與所述關(guān)鍵字相匹配的索引,得到搜索結(jié)果; 結(jié)果發(fā)送模塊,用于將所述搜索結(jié)果發(fā)送至所述主節(jié)點(diǎn),以便所述主節(jié)點(diǎn)綜合所述第一節(jié)點(diǎn)和所述第二節(jié)點(diǎn)的搜索結(jié)果得到所述主題的搜索結(jié)果,綜合所有主題的搜索結(jié)果,得到最終搜索結(jié)果。
8.如權(quán)利要求7所述的裝置,其特征在于,所述結(jié)果發(fā)送模塊綜合所述所有主題的搜索結(jié)果之前還包括: 排序模塊,用于對(duì)所述所有主題的搜索結(jié)果進(jìn)行排序。
【文檔編號(hào)】G06F17/30GK104021205SQ201410272487
【公開日】2014年9月3日 申請(qǐng)日期:2014年6月18日 優(yōu)先權(quán)日:2014年6月18日
【發(fā)明者】楊樹強(qiáng), 陳志坤, 金松昌, 尹洪, 賈焰, 韓偉紅, 周斌, 李愛平 申請(qǐng)人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)