專利名稱:一種用于索引更新的處理方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及互聯(lián)網(wǎng)中的信息搜索技術(shù),尤其涉及一種用于索引更新的處理 方法和系統(tǒng)。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,為了滿足互聯(lián)網(wǎng)用戶對(duì)不同領(lǐng)域信息的獲取需求, 信息搜索技術(shù)成為當(dāng)前非常熱門的互聯(lián)網(wǎng)技術(shù)之一?;ヂ?lián)網(wǎng)中的信息搜索服務(wù) 是由互聯(lián)網(wǎng)中的各種搜索引擎提供的,搜索引擎的數(shù)據(jù)庫中集中了大量的信息, 搜索引擎的功能是從數(shù)據(jù)庫中搜索用戶所需的信息。
對(duì)于搜索引擎中新入庫的信息,通常需要進(jìn)行切詞、編碼、順排、倒排等 操作,生成索引和對(duì)應(yīng)的數(shù)據(jù),并根據(jù)生成的索引和數(shù)據(jù)對(duì)原來的索引進(jìn)行重 建。對(duì)于數(shù)據(jù)量較小的信息,上述的切詞、編碼、順排、倒排等操作可以在內(nèi)
存中完成,且生成的索引和數(shù)據(jù)也可以存儲(chǔ)在內(nèi)存中;而對(duì)于數(shù)據(jù)量較大的信 息,則是由磁盤對(duì)生成的索引和數(shù)據(jù)進(jìn)行存儲(chǔ)。因此,現(xiàn)有技術(shù)中通常是釆用 內(nèi)存和磁盤相結(jié)合的構(gòu)架進(jìn)行信息存儲(chǔ)的,搜索引擎所接收的新數(shù)據(jù)先由內(nèi)存 進(jìn)行加載,再定期將內(nèi)存中加載的新數(shù)據(jù)發(fā)送給磁盤進(jìn)行加載;當(dāng)然,內(nèi)存和 磁盤中的索引也需要隨著新數(shù)據(jù)的加載進(jìn)行更新重建。具體的處理流程如圖l 所示,主要包括以下步驟
步驟IOI,判斷是否觸發(fā)磁盤索引更新,如果是,則轉(zhuǎn)到步驟102;否則, 轉(zhuǎn)到步驟103。
磁盤索引更新的操作是由設(shè)定的磁盤更新周期來觸發(fā)的,在每次磁盤更新 周期結(jié)束的時(shí)刻即為磁盤索引更新的時(shí)間點(diǎn),搜索引擎開始觸發(fā)進(jìn)行磁盤索引 更新的操作。步驟102,搜索引擎將內(nèi)存所存儲(chǔ)的在最近一個(gè)磁盤更新周期內(nèi)接收到的 所有新數(shù)據(jù)發(fā)送給磁盤,由磁盤根據(jù)所接收的新數(shù)據(jù)進(jìn)行磁盤索引的重建,并 進(jìn)行新數(shù)據(jù)的加載,然后結(jié)束當(dāng)前流程。其中,搜索引擎接收到的新數(shù)據(jù)中包
括刪除文檔列表、新增文檔列表和更新文檔列表的至少一種。 步驟103,搜索引擎將接收的新數(shù)據(jù)提供給內(nèi)存。
步驟104,內(nèi)存根據(jù)接收的新數(shù)據(jù)進(jìn)行內(nèi)存索引的重建,并進(jìn)行新數(shù)據(jù)的 加載。
在實(shí)際應(yīng)用中,用戶對(duì)諸如知識(shí)型搜索、新聞搜索和論壇搜索等等的搜索 結(jié)果的時(shí)效性要求較高,希望最新的信息能夠盡可能的及時(shí)搜索到。這就要求 搜索引擎能夠以盡可能快的更新速度完成新信息的索引更新重建和檢索服務(wù)的 提供。雖然內(nèi)存索引重建的速度比磁盤索引重建的速度更快,但是由于內(nèi)存每 接收到新數(shù)據(jù)時(shí)就得進(jìn)行索引重建,因此,內(nèi)存索引重建的時(shí)間也會(huì)隨著內(nèi)存 中數(shù)據(jù)量的增大而線性增長;也就是說,在一個(gè)磁盤更新周期內(nèi),內(nèi)存中的數(shù) 據(jù)更新速度會(huì)越來越慢。
由此可知,由于現(xiàn)有技術(shù)中搜索引擎會(huì)先將數(shù)據(jù)發(fā)送至內(nèi)存,這樣,內(nèi)存 索引更新的速度必然會(huì)隨著內(nèi)存中的數(shù)據(jù)量的不斷增大而變得越來越慢,從而 導(dǎo)致現(xiàn)有技術(shù)達(dá)不到用戶對(duì)搜索結(jié)果的高時(shí)效性要求,給用戶帶來不便。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種用于索引更新的處理方法和系 統(tǒng),以解決現(xiàn)有技術(shù)中由于內(nèi)存索引的更新速度慢而導(dǎo)致信息搜索時(shí)效性不高 的問題。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的 本發(fā)明提供了 一種用于索引更新的處理系統(tǒng),該系統(tǒng)包括 數(shù)據(jù)接收子系統(tǒng),用于接收新數(shù)據(jù),所述新數(shù)據(jù)包括刪除文檔列表、新增 文檔列表和更新文檔列表的至少 一種;
數(shù)據(jù)分發(fā)子系統(tǒng),用于對(duì)所述新數(shù)據(jù)進(jìn)行分發(fā)多級(jí)索引內(nèi)存子系統(tǒng),包括多級(jí)索引,數(shù)據(jù)由上級(jí)索引到下級(jí)索引逐級(jí)傳 遞;所述多級(jí)索引內(nèi)存子系統(tǒng)用于通過第 一級(jí)索引對(duì)來自所述數(shù)據(jù)分發(fā)子系統(tǒng)
的新數(shù)據(jù)進(jìn)行接收,并根據(jù)所接收的新數(shù)據(jù)對(duì)所述第一級(jí)索引進(jìn)行重建;在所 述新數(shù)據(jù)由所述第一級(jí)索引逐級(jí)傳遞到其他各級(jí)索引時(shí),根據(jù)所傳遞的新數(shù)據(jù) 對(duì)所述其他各級(jí)索引依次進(jìn)行重建。
所述系統(tǒng)還包括磁盤索引子系統(tǒng),用于根據(jù)來自所述數(shù)據(jù)分發(fā)子系統(tǒng)或 多級(jí)索引內(nèi)存子系統(tǒng)的新數(shù)據(jù),對(duì)磁盤索引進(jìn)行重建。
所述數(shù)據(jù)接收子系統(tǒng)進(jìn)一步包括
數(shù)據(jù)檢測模塊,用于檢測每個(gè)檢測周期內(nèi)的新數(shù)據(jù);
數(shù)據(jù)合并模塊,用于所述數(shù)據(jù)檢測模塊在檢測周期內(nèi)檢測到多批新數(shù)據(jù)時(shí), 對(duì)所述多批新數(shù)據(jù)進(jìn)行合并,并將所述合并后的新數(shù)據(jù)提供給所述數(shù)據(jù)分發(fā)子 系統(tǒng)。
所述多級(jí)索引內(nèi)存子系統(tǒng)進(jìn)一步包括
索引切換模塊,與所述索引重建模塊相連,用于對(duì)由主索引和備索引構(gòu)成 的各級(jí)索引,在所述各級(jí)索引的主索引和備索引中的其中一個(gè)索引進(jìn)行重建時(shí),
將服務(wù)切換到另一個(gè)索引;
管理模塊,與所述數(shù)據(jù)傳遞模塊和索引重建模塊相連,用于通過循環(huán)文件 對(duì)所述多級(jí)索引內(nèi)存子系統(tǒng)中的文檔進(jìn)行管理,并通過全局文檔表對(duì)所述多級(jí) 索引內(nèi)存子系統(tǒng)中的索引進(jìn)行管理。
本發(fā)明還提供了一種用于索引更新的處理方法,該方法包括
通過多級(jí)索引內(nèi)存子系統(tǒng)的多級(jí)索引中的第一級(jí)索引接收來自數(shù)據(jù)分發(fā)子 系統(tǒng)的新數(shù)據(jù),所述新數(shù)據(jù)包括刪除文檔列表、新增文檔列表和更新文檔列表
的至少一種;
根據(jù)所接收的新數(shù)據(jù)對(duì)所述第一級(jí)索引進(jìn)行重建; 在所述新數(shù)據(jù)由所述第一級(jí)索引逐級(jí)傳遞到其他各級(jí)索引時(shí),根據(jù)所述新 數(shù)據(jù)對(duì)所述其他各級(jí)索引依次進(jìn)行重建。
所述多級(jí)索引中的各級(jí)索引的數(shù)據(jù)容量從上級(jí)到下級(jí)依次遞增,數(shù)據(jù)由上級(jí)索引到下級(jí)索引逐級(jí)傳遞。
所述各級(jí)索引都由主索引和備索引構(gòu)成,所述對(duì)索引進(jìn)行重建具體包括 從所述各級(jí)索引的主索引和備索引中選擇其一進(jìn)行索引重建,并在所述主
索引和備索引中的其中 一個(gè)索引進(jìn)行重建時(shí),將服務(wù)切換到另 一個(gè)索引; 在索引重建完畢之后,將所述主索引和備索引更新為重建后的索引。 所述新數(shù)據(jù)由第一級(jí)索引逐級(jí)傳遞到其他各級(jí)索引,具體包括在上級(jí)索
引的數(shù)據(jù)量達(dá)到設(shè)定的門限值時(shí),將所述上級(jí)索引中的新數(shù)據(jù)傳遞到下級(jí)索引,
觸發(fā)所述下級(jí)索引進(jìn)行重建,并將所述上級(jí)索引中已傳遞的新數(shù)據(jù)刪除。
該方法進(jìn)一步包括在所述多級(jí)索引中的最后一級(jí)索引的數(shù)據(jù)量達(dá)到設(shè)定 的門限值時(shí),將所述最后一級(jí)索引中的新數(shù)據(jù)傳遞給磁盤索引子系統(tǒng),觸發(fā)所 述磁盤索引子系統(tǒng)進(jìn)行磁盤索引重建,并將所述最后 一級(jí)索引中已傳遞的新數(shù) 據(jù)刪除。
該方法進(jìn)一步包括所述數(shù)據(jù)分發(fā)子系統(tǒng)根據(jù)所述刪除文檔列表、新增文 檔列表和更新文檔列表生成由文檔標(biāo)識(shí)組成的序列文件,并在每次磁盤更新周 期結(jié)東時(shí)刻,將本次磁盤更新周期內(nèi)接收的新數(shù)據(jù)和生成的序列文件發(fā)送給磁 盤索引子系統(tǒng),觸發(fā)所述磁盤索引子系統(tǒng)進(jìn)行磁盤索引重建。
該方法進(jìn)一步包括通過循環(huán)文件對(duì)所述多級(jí)索引內(nèi)存子系統(tǒng)中的文檔進(jìn) 行管理。
該方法進(jìn)一步包括通過全局文檔表對(duì)所述多級(jí)索引內(nèi)存子系統(tǒng)中的各級(jí) 索引進(jìn)行管理。
本發(fā)明所提供的一種用于索引更新的處理方法和系統(tǒng),釆用多級(jí)索引的內(nèi) 存索引結(jié)構(gòu),通過多級(jí)索引中的第一級(jí)索引接收新數(shù)據(jù),并根據(jù)所接收的新數(shù) 據(jù)對(duì)第一級(jí)索引進(jìn)行重建;在新數(shù)據(jù)由第一級(jí)索引逐級(jí)傳遞到其他各級(jí)索引時(shí), 根據(jù)新數(shù)據(jù)對(duì)其他各級(jí)索引依次進(jìn)行重建。由于第一級(jí)索引的數(shù)據(jù)容量比較小, 索引重建速度非???,當(dāng)有新數(shù)據(jù)到達(dá)第一級(jí)索引時(shí),只需要很短的時(shí)間即可 完成第一級(jí)索引的索引重建,也就只需要很短的時(shí)間就可以從第一級(jí)索引中搜 索到該數(shù)據(jù),從而提高了索引重建速度,充分滿足用戶對(duì)搜索時(shí)效性要求,增加了用戶的使用體驗(yàn)。
圖l為現(xiàn)有技術(shù)中用于索引更新的處理方法的流程圖2為本發(fā)明一種用于索引更新的處理系統(tǒng)的組成結(jié)構(gòu)示意圖3為本發(fā)明中多級(jí)索引的結(jié)構(gòu)示意圖4為本發(fā)明中數(shù)據(jù)分發(fā)的流程圖5為本發(fā)明中索引切換的流程圖6為本發(fā)明中全局文檔表的結(jié)構(gòu)示意圖7本發(fā)明中循環(huán)文件管理的示意圖。
具體實(shí)施例方式
下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)一步詳細(xì)闡述。 本發(fā)明所提供的一種用于索引更新的處理系統(tǒng),如圖2所示,該系統(tǒng)包括:
數(shù)據(jù)接收子系統(tǒng)IO、數(shù)據(jù)分發(fā)子系統(tǒng)20、多級(jí)索引內(nèi)存子系統(tǒng)30和磁盤索引
子系統(tǒng)40。
其中,數(shù)據(jù)接收子系統(tǒng)IO,用于接收新數(shù)據(jù)。所謂新數(shù)據(jù),是指數(shù)據(jù)接收 子系統(tǒng)10新接收的數(shù)據(jù),該新數(shù)據(jù)中包括刪除文檔列表、新增文檔列表和更新 文檔列表的至少一種。刪除文檔列表中包括需要?jiǎng)h除的文檔標(biāo)識(shí)(ID,IDentity); 新增文檔列表中包括需要增加的文檔ID及對(duì)應(yīng)的新增文檔;更新文檔列表中包 括需要更新的文檔ID及對(duì)應(yīng)的更新文檔。
數(shù)據(jù)分發(fā)子系統(tǒng)20,與數(shù)據(jù)接收子系統(tǒng)IO相連,用于對(duì)來自數(shù)據(jù)接收子 系統(tǒng)10的新數(shù)據(jù)進(jìn)行分發(fā)。數(shù)據(jù)分發(fā)子系統(tǒng)20將來自數(shù)據(jù)接收子系統(tǒng)10的新 數(shù)據(jù)發(fā)送給多級(jí)索引內(nèi)存子系統(tǒng)30;并根據(jù)設(shè)定的磁盤更新周期,在每次磁盤 更新周期結(jié)東時(shí)刻,數(shù)據(jù)分發(fā)子系統(tǒng)20將該磁盤更新周期內(nèi)所接收的所有新數(shù) 據(jù)發(fā)送給磁盤索引子系統(tǒng)40。
多級(jí)索引內(nèi)存子系統(tǒng)30,與數(shù)據(jù)分發(fā)子系統(tǒng)20相連,多級(jí)索引內(nèi)存子系統(tǒng)30包括多級(jí)索引,如圖3所示,各級(jí)索引的數(shù)據(jù)容量從上級(jí)到下級(jí)依次遞增,
多級(jí)索引中的數(shù)據(jù)是由上級(jí)索引到下級(jí)索引逐級(jí)傳遞的,且各級(jí)索引都由主索
引和備索引構(gòu)成。圖3為一個(gè)n級(jí)索引,L1—Index表示n級(jí)索引的第一級(jí)索引, Ln一Index表示n級(jí)索引的最后一級(jí)索引,從圖3中可以看出,對(duì)多級(jí)索引進(jìn)行 信息搜索時(shí),是對(duì)各級(jí)索引都進(jìn)行搜索,從而得到最終的搜索結(jié)果。本發(fā)明中 為各級(jí)索引分別設(shè)有數(shù)據(jù)傳遞的門限值,當(dāng)某級(jí)索引中的數(shù)據(jù)量達(dá)到對(duì)應(yīng)的門 限值時(shí),該級(jí)索引將自身的新數(shù)據(jù)傳遞給下級(jí)索引。
以3級(jí)索引為例對(duì)數(shù)據(jù)在各級(jí)索引間的傳遞進(jìn)行說明,Lljndex的數(shù)據(jù)容 量為2兆,L2一Index的數(shù)據(jù)容量為8兆,L3—Index的數(shù)據(jù)容量為20兆。設(shè)定 Ll_Index的門限值為1兆,L2一Index的門限值為4兆,L3—Index的門限值為 10兆。L1—Index對(duì)來自數(shù)據(jù)分發(fā)子系統(tǒng)20的新數(shù)據(jù)進(jìn)行接收,并根據(jù)接收的 新數(shù)據(jù)對(duì)LlJndex進(jìn)行索引重建,且Lljndex每次接收到新數(shù)據(jù),都需要對(duì) 自身索引進(jìn)行重建;在LlJndex中的數(shù)據(jù)量達(dá)到l兆時(shí),L1—Index將自身當(dāng)前 的新數(shù)據(jù)全部傳遞給L2Jndex,傳遞結(jié)東后,LI—Index將已經(jīng)傳遞的新數(shù)據(jù)從 Ll一Index中刪除。同樣地,L2—Index接收來自Lljndex的新數(shù)據(jù),并根據(jù)接 收的新數(shù)據(jù)進(jìn)行自身索引的重建,且L2Jndex每次接收到新數(shù)據(jù),都需要對(duì)自 身索引進(jìn)行重建;在L2—Index中的數(shù)據(jù)量達(dá)到4兆時(shí),L2Jndex將自身當(dāng)前的 新數(shù)據(jù)全部傳遞給L3—Index,觸發(fā)L3_Index進(jìn)行索引重建,傳遞結(jié)束后, L2Jndex將已經(jīng)傳遞的新數(shù)據(jù)從L2Jndex中刪除。
從上述的舉例中可以看出,上級(jí)索引將數(shù)據(jù)傳遞給下級(jí)索引后,上級(jí)索引 中的數(shù)據(jù)刪除,從而可以保證多級(jí)索引中的數(shù)據(jù)不發(fā)生重復(fù)。另外,各級(jí)索引 對(duì)應(yīng)的門限值可以根據(jù)實(shí)際需要進(jìn)行設(shè)定,但是通常設(shè)定的每級(jí)索引對(duì)應(yīng)的門 限值都要小于各級(jí)索引的數(shù)據(jù)容量,從而保證各級(jí)索引在數(shù)據(jù)量達(dá)到門限值并 進(jìn)行數(shù)據(jù)的傳遞時(shí),還有空間用來接收上級(jí)索引的新數(shù)據(jù)。
磁盤索引子系統(tǒng)40,與數(shù)據(jù)分發(fā)子系統(tǒng)20相連,數(shù)據(jù)分發(fā)子系統(tǒng)20在每 次磁盤更新周期結(jié)東時(shí)刻,將自身所存儲(chǔ)的本次磁盤更新周期內(nèi)所接收的所有 新數(shù)據(jù)發(fā)送給磁盤索引子系統(tǒng)40,由磁盤索引子系統(tǒng)40根據(jù)接收的新數(shù)據(jù)進(jìn)行磁盤索引的重建??梢钥闯?,磁盤索引子系統(tǒng)40每經(jīng)過一個(gè)磁盤更新周期,
都會(huì)根據(jù)數(shù)據(jù)分發(fā)子系統(tǒng)20發(fā)送的新數(shù)據(jù)進(jìn)行磁盤索引的重建,使得磁盤索引 子系統(tǒng)40中的信息能夠得到及時(shí)的更新。相應(yīng)的,由于多級(jí)索引內(nèi)存子系統(tǒng) 30中所存儲(chǔ)的所有新數(shù)據(jù)都有其對(duì)應(yīng)的接收時(shí)間,多級(jí)索引內(nèi)存子系統(tǒng)30在 每次磁盤更新周期的結(jié)束時(shí)刻,將多級(jí)索引中存儲(chǔ)的在本次磁盤更新周期內(nèi)所 接收的新數(shù)據(jù)以及對(duì)應(yīng)的索引刪除,以防止多級(jí)索引內(nèi)存子系統(tǒng)30中的數(shù)據(jù)與 磁盤索引子系統(tǒng)40中出現(xiàn)重復(fù)。
上述的數(shù)據(jù)接收子系統(tǒng)IO還包括相互連接的數(shù)據(jù)檢測模塊11和數(shù)據(jù)合并 模塊12。數(shù)據(jù)檢測模塊ll,用于檢測每個(gè)檢測周期內(nèi)的新數(shù)據(jù)。檢測周期的大 小可以根據(jù)實(shí)際需要進(jìn)行設(shè)定;數(shù)據(jù)檢測模塊ll根據(jù)設(shè)定的檢測周期,檢測每 個(gè)檢測周期內(nèi)是否有新數(shù)據(jù)的到來。數(shù)據(jù)合并模塊12,用于數(shù)據(jù)檢測模塊11 在檢測周期內(nèi)檢測到多批新數(shù)據(jù)時(shí),對(duì)檢測到的多批新數(shù)據(jù)進(jìn)行合并,并將合 并后的新數(shù)據(jù)提供給數(shù)據(jù)分發(fā)子系統(tǒng)20。本發(fā)明中設(shè)定檢測周期,并對(duì)每個(gè)檢 測周期內(nèi)的多批新數(shù)據(jù)進(jìn)行合并,以固定的周期向數(shù)據(jù)分發(fā)子系統(tǒng)20提供新數(shù) 據(jù),可以降低多級(jí)索引內(nèi)存子系統(tǒng)30在索引重建上的時(shí)間抖動(dòng)。例如檢測周 期為2秒,在2秒內(nèi)檢測到兩批新數(shù)據(jù)A、 B,進(jìn)行數(shù)據(jù)合并后提供給數(shù)據(jù)分 發(fā)子系統(tǒng)20,會(huì)觸發(fā)多級(jí)索引內(nèi)存子系統(tǒng)30進(jìn)行一次索引重建;相比現(xiàn)有技 術(shù)中新數(shù)據(jù)A觸發(fā)一次索引重建,新數(shù)據(jù)B再觸發(fā)一次索引重建,本發(fā)明中的 索引重建時(shí)間波動(dòng)較小,從而可以降低多級(jí)索引內(nèi)存子系統(tǒng)30在索引重建上的 時(shí)間抖動(dòng)。
上述的數(shù)據(jù)分發(fā)子系統(tǒng)20還包括磁盤更新周期設(shè)定模塊21、序列文件 生成模塊22和數(shù)據(jù)分發(fā)模塊23。磁盤更新周期設(shè)定模塊21,用于設(shè)定磁盤更 新周期。序列文件生成模塊22,用于根據(jù)接收的新數(shù)據(jù)中所包含刪除文檔列表、 新增文檔列表和更新文檔列表生成由文檔ID組成的序列文件,該序列文件中還 包括各個(gè)文檔對(duì)應(yīng)的狀態(tài),例如對(duì)于需要?jiǎng)h除的文檔,文檔ID對(duì)應(yīng)的狀態(tài)為 刪除,對(duì)于新增和更新的文檔,文檔ID對(duì)應(yīng)的狀態(tài)為有效。數(shù)據(jù)分發(fā)模塊23, 與磁盤更新周期設(shè)定模塊21和序列文件生成模塊22相連,用于將接收的新數(shù)據(jù)發(fā)送給多級(jí)索引內(nèi)存子系統(tǒng)30,并根據(jù)設(shè)定的磁盤更新周期,在每次磁盤更 新周期結(jié)束時(shí)刻,將本次磁盤更新周期內(nèi)接收的新數(shù)據(jù)和生成的序列文件發(fā)送 給磁盤索引子系統(tǒng)40。
本發(fā)明中由數(shù)據(jù)分發(fā)子系統(tǒng)20實(shí)現(xiàn)的數(shù)據(jù)分發(fā)流程如圖4所示,主要包括 以下步驟
步驟401,根據(jù)接收的新數(shù)據(jù)生成序列文件。
數(shù)據(jù)分發(fā)子系統(tǒng)20根據(jù)新數(shù)據(jù)中所包含的刪除文檔列表、新增文檔列表和 更新文檔列表,生成序列文件,該序列文件中包括新數(shù)據(jù)中的各個(gè)文檔ID和對(duì) 應(yīng)的文檔狀態(tài)。
步驟402,根據(jù)設(shè)定的磁盤更新周期判定是否需要重建磁盤索引,如果是, 則執(zhí)行步驟403;否則,執(zhí)行步驟404。
數(shù)據(jù)分發(fā)子系統(tǒng)20根據(jù)設(shè)定的磁盤更新周期,確定每次磁盤更新周期結(jié)束 時(shí)刻為磁盤索引重建的時(shí)間點(diǎn),如果到達(dá)該時(shí)間點(diǎn)時(shí),判定需要重建磁盤索引, 其他時(shí)間段則判定不需要重建磁盤索引。
步驟403,向磁盤索引子系統(tǒng)40發(fā)送本次磁盤索引周期內(nèi)接收的新數(shù)據(jù)和 生成的序列文件,觸發(fā)磁盤索引子系統(tǒng)40進(jìn)行磁盤索引重建,然后結(jié)東當(dāng)前流 程。
磁盤索引子系統(tǒng)40根據(jù)序列文件獲知需要進(jìn)行哪些文檔的增加、刪除或更 新操作,執(zhí)行完相應(yīng)文檔的增加、刪除和更新操作后,重建磁盤索引。 步驟404,向多級(jí)索引內(nèi)存子系統(tǒng)30發(fā)送新數(shù)據(jù)。
每當(dāng)數(shù)據(jù)分發(fā)子系統(tǒng)20中有新數(shù)據(jù)到來時(shí),數(shù)據(jù)分發(fā)子系統(tǒng)20將新數(shù)據(jù) 轉(zhuǎn)發(fā)給多級(jí)索引內(nèi)存子系統(tǒng)30,觸發(fā)多級(jí)索引內(nèi)存子系統(tǒng)30進(jìn)行內(nèi)存索引重 建。
本發(fā)明中的多級(jí)索引內(nèi)存子系統(tǒng)30還包括數(shù)據(jù)傳遞模塊31和索引重建 模塊32。數(shù)據(jù)傳遞模塊31,用于將來自數(shù)據(jù)分發(fā)子系統(tǒng)20的新數(shù)據(jù)由第一級(jí) 索引逐級(jí)傳遞到其他各級(jí)索引,新數(shù)據(jù)逐級(jí)傳遞的具體過程前面已詳細(xì)說明, 此處不再贅述。索引重建模塊32,與數(shù)據(jù)傳遞模塊31相連,用于根據(jù)各級(jí)索引接收到的新數(shù)據(jù),對(duì)各級(jí)索引進(jìn)行重建。
另外,為了保證多級(jí)索引內(nèi)存子系統(tǒng)30中的各級(jí)索引在進(jìn)行重建時(shí),仍然 能夠?yàn)橛脩籼峁┱5男畔⑺阉鞣?wù),本發(fā)明的各級(jí)索引都是由主索引和備索 引組成,從而使得其中一個(gè)索引在進(jìn)行重建時(shí),還能選擇另外一個(gè)索引為用戶 提供服務(wù)?;诖?,本發(fā)明中的多級(jí)索引內(nèi)存子系統(tǒng)30還包括索引切換模塊
33,與索引重建模塊32相連,用于在各級(jí)索引的主索引和備索引中的其中一個(gè)
索引進(jìn)行重建時(shí),將服務(wù)切換到另一個(gè)索引,以保證服務(wù)的正常提供。
下面以主索引重建、備索引提供服務(wù)為例,對(duì)索引切換的流程進(jìn)行詳細(xì)闡 述,如圖5所示,主要包括以下步驟
步驟501,接收到新數(shù)據(jù)時(shí),由主索引進(jìn)行索引重建,觸發(fā)索引切換,將 服務(wù)切換到備索引,由被索引提供服務(wù)。
例如Ll_Index由主索引a和備索引b組成,當(dāng)Ll一Index中有新數(shù)據(jù)來到 時(shí),主索引a進(jìn)行重建,LI—Index上的所有服務(wù)都切換到備索引b,在主索引a 重建期間,由備索引b提供服務(wù)。
步驟502,主索引重建完畢之后,確定備索引是否還在提供服務(wù),如果是, 則執(zhí)行步驟503;否則,執(zhí)行步驟504。
步驟503,等待備索引提供服務(wù),并返回步驟502,直到確定備索引沒有在 提供服務(wù)。
步驟504,將重建后的主索引替換備索引,并由重建后的主索引或備索引 提供服務(wù)。
仍以步驟501中的舉例進(jìn)行說明,主索引a重建后得到新的主索引al,此 時(shí)需要對(duì)備索引b也進(jìn)行更新,以達(dá)到備索引和主索引的同步,因此,將新的 主索引al替換備索引b,成為新的備索引bl。
需要指出的是,本發(fā)明中采用多級(jí)索引的構(gòu)架,由于在上級(jí)索引的數(shù)據(jù)量 達(dá)到門限值時(shí),才將新數(shù)據(jù)傳遞到下級(jí)索引,觸發(fā)下級(jí)索引重建,因此,會(huì)存 在上級(jí)索引進(jìn)行文檔刪除或更新操作時(shí),上級(jí)索引中的索引變化無法及時(shí)反應(yīng) 到下級(jí)索引的情況。上述情況會(huì)導(dǎo)致用戶在進(jìn)行搜索是,舊的文檔或已刪除的文檔仍然被搜索出來。于是,本發(fā)明釆用全局文檔表對(duì)索引進(jìn)行統(tǒng)一管理,如
圖6所示,在全局文檔表中,將多級(jí)索引內(nèi)存子系統(tǒng)30的所有文檔ID有序排 列,每個(gè)文檔ID對(duì)應(yīng)一個(gè)文檔位圖,每個(gè)文檔位圖中包括n個(gè)比特位,每個(gè)比 特位分別用來標(biāo)識(shí)該文檔是否存在于各級(jí)索引中。以3級(jí)索引為例,文檔ID1 對(duì)應(yīng)的文檔位圖中存在3個(gè)比特位,第一個(gè)比特位對(duì)應(yīng)Ll一Index,第二個(gè)比特 位對(duì)應(yīng)L2—Index,第三個(gè)比特位對(duì)應(yīng)L3_Index;第一個(gè)比特位置1時(shí),表明文 檔ID1存在于Ll一Index中,第一個(gè)比特位置0時(shí),表明文檔ID1不存在于 LI—Index中。其他兩個(gè)比特位的功能與第一個(gè)比特位類似,不再贅述。
由此可以看出,當(dāng)文檔在不同級(jí)別索引間傳遞時(shí),需要把傳遞之前該文檔 所在的索引對(duì)應(yīng)的比特位置0,并把傳遞之后該文檔所在的索引對(duì)應(yīng)的比特位 置1。例如在上述的3級(jí)索引中,文檔IDl從Lljtndex傳遞到L2—Index時(shí), 需要將文檔IDl對(duì)應(yīng)的文檔位圖的第一個(gè)比特位置0,并將第二個(gè)比特位置1。 另夕卜,如果文檔IDl在3級(jí)索引中都存在,則文檔IDl在Ll一Index中被更新時(shí), 需要將文檔IDl對(duì)應(yīng)的文檔位圖的第二個(gè)比特位和第三個(gè)比特位置0,以表示 L2—Index和L3Jndex中的文檔IDl為無效,從而避免了用戶搜索時(shí),將文檔 IDl更新前的舊文檔搜索出來。當(dāng)文檔ID1被執(zhí)行刪除操作時(shí),需要將全局文 檔表中的文檔IDl及對(duì)應(yīng)的文檔位圖清空。
由于多級(jí)索引內(nèi)存子系統(tǒng)30中對(duì)文檔的增加、刪除、更新操作非常頻繁, 因此,本發(fā)明釆用循環(huán)文件的構(gòu)架對(duì)多級(jí)索引內(nèi)存子系統(tǒng)30中的各個(gè)文檔進(jìn)行 管理,可以通過循環(huán)文件的頭指針和尾指針的移動(dòng),方便實(shí)現(xiàn)對(duì)文檔的各種操 作。下面結(jié)合圖7進(jìn)一步詳細(xì)說明,圖7中通過頭指針(Head)和尾指針(Tail) 指示出文檔的有效范圍,初始文檔包括文檔l、文檔2、文檔3、文檔4、文檔 5和文檔6;需要新增文檔7時(shí),只需將Tail向后移動(dòng)一位,并相應(yīng)的將文檔7 的內(nèi)容按順序插入循環(huán)文件中即可;需要?jiǎng)h除文檔l、文檔2和文檔3時(shí),無 需物理上清除文檔l、文檔2和文檔3,只需將Head向后移動(dòng)三位,指向文檔 4即可;如果需要繼續(xù)新增文檔8和文檔9,仍然按照順序插入文檔,并相應(yīng)移 動(dòng)Tail,當(dāng)?shù)竭_(dá)循環(huán)文件尾部時(shí),則返回循環(huán)文件的頭部繼續(xù)插入即可。另外,
14如果需要?jiǎng)h除循環(huán)文件中的文檔5,則不需要移動(dòng)Head和Tail,通過圖6中所 示的全局文檔表,將文檔5對(duì)應(yīng)的文檔位圖的各個(gè)比特位置0,以表示文檔5 狀態(tài)為無效即可。
釆用循環(huán)文件的構(gòu)架,只需根據(jù)文檔的刪除、增加和更新需要移動(dòng)Head 和Tail即可實(shí)現(xiàn)文檔的方便管理,相比現(xiàn)有技術(shù)中創(chuàng)建新文件并重新復(fù)制有效 文檔的操作,循環(huán)文件的管理方式不會(huì)消耗過多的文檔管理時(shí)間。
在硬件方面,本發(fā)明的多級(jí)索引內(nèi)存子系統(tǒng)30中增設(shè)一個(gè)管理模塊34, 與數(shù)據(jù)傳遞模塊31和索引重建模塊32相連,用以通過循環(huán)文件對(duì)多級(jí)索引內(nèi) 存子系統(tǒng)30中的文檔進(jìn)行管理,并通過全局文檔表對(duì)多級(jí)索引內(nèi)存子系統(tǒng)30 中的索引進(jìn)行管理。
另外,本發(fā)明中還可以將磁盤索引子系統(tǒng)40作為多級(jí)索引內(nèi)存子系統(tǒng)30 的下一級(jí)索引,即多級(jí)索引內(nèi)存子系統(tǒng)30的最后一級(jí)索引的數(shù)據(jù)量達(dá)到設(shè)定的 門限值時(shí),將最后一級(jí)索引中的新數(shù)據(jù)傳遞給磁盤索引子系統(tǒng)40,觸發(fā)磁盤索 引子系統(tǒng)40進(jìn)行磁盤索引重建,在傳遞結(jié)東后,將最后一級(jí)索引中已傳遞的新 數(shù)據(jù)刪除,以避免多級(jí)索引內(nèi)存子系統(tǒng)30和磁盤索引子系統(tǒng)40中的數(shù)據(jù)出現(xiàn) 重復(fù)。在這種實(shí)施方式下,不再需要設(shè)置磁盤索引更新周期,數(shù)據(jù)分發(fā)子系統(tǒng) 20也不需要定期向磁盤索引子系統(tǒng)40發(fā)送新數(shù)據(jù)觸發(fā)磁盤索引子系統(tǒng)40進(jìn)行 磁盤索引重建,磁盤索引子系統(tǒng)40只需要在有多級(jí)索引內(nèi)存子系統(tǒng)30中的新 數(shù)據(jù)到來時(shí),進(jìn)行磁盤索引重建即可,從而簡化了數(shù)據(jù)分發(fā)子系統(tǒng)20的數(shù)據(jù)分 發(fā)操作。
本發(fā)明通過多級(jí)索引內(nèi)存子系統(tǒng)30,實(shí)現(xiàn)多級(jí)索引分別進(jìn)行索引重建,由 于LI—Index的數(shù)據(jù)容量通常比較小,使得LI—Index的索引重建速度非常快, 當(dāng)有新數(shù)據(jù)到達(dá)多級(jí)索引內(nèi)存子系統(tǒng)30時(shí),只需要很短的時(shí)間即可完成 LI—Index的索引重建,也就只需要很短的時(shí)間就可以從LI—Index中搜索到該數(shù) 據(jù)。對(duì)于知識(shí)搜索來說,用戶提出的問題能夠馬上被搜索引擎搜索出來,從而 加快了問題被解決的速度,提高了問題被解決的概率;對(duì)于新聞搜索,新聞快 訊能夠被快速搜索出來,充分滿足用戶對(duì)搜索時(shí)效性要求,增加了用戶的使用體驗(yàn)。
以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種用于索引更新的處理系統(tǒng),其特征在于,該系統(tǒng)包括數(shù)據(jù)接收子系統(tǒng),用于接收新數(shù)據(jù),所述新數(shù)據(jù)包括刪除文檔列表、新增文檔列表和更新文檔列表的至少一種;數(shù)據(jù)分發(fā)子系統(tǒng),用于對(duì)所述新數(shù)據(jù)進(jìn)行分發(fā);多級(jí)索引內(nèi)存子系統(tǒng),包括多級(jí)索引,數(shù)據(jù)由上級(jí)索引到下級(jí)索引逐級(jí)傳遞;所述多級(jí)索引內(nèi)存子系統(tǒng)用于通過第一級(jí)索引對(duì)來自所述數(shù)據(jù)分發(fā)子系統(tǒng)的新數(shù)據(jù)進(jìn)行接收,并根據(jù)所接收的新數(shù)據(jù)對(duì)所述第一級(jí)索引進(jìn)行重建;在所述新數(shù)據(jù)由所述第一級(jí)索引逐級(jí)傳遞到其他各級(jí)索引時(shí),根據(jù)所傳遞的新數(shù)據(jù)對(duì)所述其他各級(jí)索引依次進(jìn)行重建。
2、 根據(jù)權(quán)利要求l所述用于索引更新的處理系統(tǒng),其特征在于,所述系統(tǒng) 還包括磁盤索引子系統(tǒng),用于根據(jù)來自所述數(shù)據(jù)分發(fā)子系統(tǒng)或多級(jí)索引內(nèi)存 子系統(tǒng)的新數(shù)據(jù),對(duì)磁盤索引進(jìn)行重建。
3、 根據(jù)權(quán)利要求1或2所述用于索引更新的處理系統(tǒng),其特征在于,所述 數(shù)據(jù)接收子系統(tǒng)進(jìn)一步包括數(shù)據(jù)檢測模塊,用于檢測每個(gè)檢測周期內(nèi)的新數(shù)據(jù);數(shù)據(jù)合并模塊,用于所述數(shù)據(jù)檢測模塊在檢測周期內(nèi)檢測到多批新數(shù)據(jù)時(shí), 對(duì)所述多批新數(shù)據(jù)進(jìn)行合并,并將所述合并后的新數(shù)據(jù)提供給所述數(shù)據(jù)分發(fā)子 系統(tǒng)。
4、 根據(jù)權(quán)利要求1或2所述用于索引更新的處理系統(tǒng),其特征在于,所述 多級(jí)索引內(nèi)存子系統(tǒng)進(jìn)一步包括索引切換模塊,與所述索引重建模塊相連,用于對(duì)由主索引和備索引構(gòu)成 的各級(jí)索引,在所述各級(jí)索引的主索引和備索引中的其中一個(gè)索引進(jìn)行重建時(shí), 將服務(wù)切換到另一個(gè)索引;管理模塊,與所述數(shù)據(jù)傳遞模塊和索引重建模塊相連,用于通過循環(huán)文件 對(duì)所述多級(jí)索引內(nèi)存子系統(tǒng)中的文檔進(jìn)行管理,并通過全局文檔表對(duì)所述多級(jí)索引內(nèi)存子系統(tǒng)中的索引進(jìn)行管理。
5、 一種用于索引更新的處理方法,其特征在于,該方法包括通過多級(jí)索引內(nèi)存子系統(tǒng)的多級(jí)索引中的第一級(jí)索引接收來自數(shù)據(jù)分發(fā)子 系統(tǒng)的新數(shù)據(jù),所述新數(shù)據(jù)包括刪除文檔列表、新增文檔列表和更新文檔列表的至少一種;根據(jù)所接收的新數(shù)據(jù)對(duì)所述第一級(jí)索引進(jìn)行重建; 在所述新數(shù)據(jù)由所述第一級(jí)索引逐級(jí)傳遞到其他各級(jí)索引時(shí),根據(jù)所述新 數(shù)據(jù)對(duì)所述其他各級(jí)索引依次進(jìn)行重建。
6、 根據(jù)權(quán)利要求5所述用于索引更新的處理方法,其特征在于,所述多級(jí) 索引中的各級(jí)索引的數(shù)據(jù)容量從上級(jí)到下級(jí)依次遞增,數(shù)據(jù)由上級(jí)索引到下級(jí) 索引逐級(jí)傳遞。
7、 根據(jù)權(quán)利要求5或6所述用于索引更新的處理方法,其特征在于,所述 各級(jí)索引都由主索引和備索引構(gòu)成,所述對(duì)索引進(jìn)行重建具體包括從所述各級(jí)索引的主索引和備索引中選擇其一進(jìn)行索引重建,并在所述主 索引和備索引中的其中一個(gè)索引進(jìn)行重建時(shí),將服務(wù)切換到另一個(gè)索引; 在索引重建完畢之后,將所述主索引和備索引更新為重建后的索引。
8、 根據(jù)權(quán)利要求5或6所述用于索引更新的處理方法,其特征在于,所述 新數(shù)據(jù)由第一級(jí)索引逐級(jí)傳遞到其他各級(jí)索引,具體包括在上級(jí)索引的數(shù)據(jù) 量達(dá)到設(shè)定的門限值時(shí),將所述上級(jí)索引中的新數(shù)據(jù)傳遞到下級(jí)索引,觸發(fā)所 述下級(jí)索引進(jìn)行重建,并將所述上級(jí)索引中已傳遞的新數(shù)據(jù)刪除。
9、 根據(jù)權(quán)利要求5或6所述用于索引更新的處理方法,其特征在于,該方法進(jìn)一步包括在所述多級(jí)索引中的最后一級(jí)索引的數(shù)據(jù)量達(dá)到設(shè)定的門限值 時(shí),將所述最后一級(jí)索引中的新數(shù)據(jù)傳遞給磁盤索引子系統(tǒng),觸發(fā)所述磁盤索 引子系統(tǒng)進(jìn)行磁盤索引重建,并將所述最后 一級(jí)索引中已傳遞的新數(shù)據(jù)刪除。
10、 根據(jù)權(quán)利要求5或6所述用于索引更新的處理方法,其特征在于,該 方法進(jìn)一步包括所述數(shù)據(jù)分發(fā)子系統(tǒng)根據(jù)所述刪除文檔列表、新增文檔列表 和更新文檔列表生成由文檔標(biāo)識(shí)組成的序列文件,并在每次磁盤更新周期結(jié)東時(shí)刻,將本次磁盤更新周期內(nèi)接收的新數(shù)據(jù)和生成的序列文件發(fā)送給磁盤索引 子系統(tǒng),觸發(fā)所述磁盤索引子系統(tǒng)進(jìn)行磁盤索引重建。
11、 根據(jù)權(quán)利要求5或6所述用于索引更新的處理方法,其特征在于,該 方法進(jìn) 一 步包括通過循環(huán)文件對(duì)所述多級(jí)索引內(nèi)存子系統(tǒng)中的文檔進(jìn)行管理。
12、 根據(jù)權(quán)利要求5或6所述用于索引更新的處理方法,其特征在于,該 方法進(jìn)一步包括通過全局文檔表對(duì)所述多級(jí)索引內(nèi)存子系統(tǒng)中的各級(jí)索引進(jìn) 行管理。
全文摘要
本發(fā)明公開了一種用于索引更新的處理系統(tǒng),包括數(shù)據(jù)接收子系統(tǒng),用于接收新數(shù)據(jù);數(shù)據(jù)分發(fā)子系統(tǒng),用于對(duì)新數(shù)據(jù)進(jìn)行分發(fā);多級(jí)索引內(nèi)存子系統(tǒng),用于通過第一級(jí)索引對(duì)來自數(shù)據(jù)分發(fā)子系統(tǒng)的新數(shù)據(jù)進(jìn)行接收,并根據(jù)所接收的新數(shù)據(jù)對(duì)第一級(jí)索引進(jìn)行重建;在新數(shù)據(jù)由第一級(jí)索引逐級(jí)傳遞到其他各級(jí)索引時(shí),根據(jù)所傳遞的新數(shù)據(jù)對(duì)其他各級(jí)索引依次進(jìn)行重建;磁盤索引子系統(tǒng),用于根據(jù)來自數(shù)據(jù)分發(fā)子系統(tǒng)或多級(jí)索引內(nèi)存子系統(tǒng)的新數(shù)據(jù),對(duì)磁盤索引進(jìn)行重建。本發(fā)明還提供了一種索引用于更新的處理方法,采用多級(jí)索引的內(nèi)存索引結(jié)構(gòu),提高了索引重建速度和信息搜索的時(shí)效性,增加了用戶的使用體驗(yàn)。
文檔編號(hào)G06F17/30GK101295323SQ20081012913
公開日2008年10月29日 申請(qǐng)日期2008年6月30日 優(yōu)先權(quán)日2008年6月30日
發(fā)明者哲 袁 申請(qǐng)人:騰訊科技(深圳)有限公司