亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種提高檢索速度的系統(tǒng)及方法

文檔序號(hào):6585222閱讀:243來源:國(guó)知局
專利名稱:一種提高檢索速度的系統(tǒng)及方法
技術(shù)領(lǐng)域
本發(fā)明涉及檢索技術(shù),尤其涉及一種提高檢索速度的系統(tǒng)及方法。
背景技術(shù)
互聯(lián)網(wǎng)時(shí)代的到來開啟了信息革命,掌握了大量信息就能在日常、商務(wù)生活中處 于不敗之地,但是信息量是如此巨大,如何甄選出有用的關(guān)鍵信息就成為了人們一直以來 討論的焦點(diǎn)。目前,在用戶的信息處理中,普遍會(huì)用到檢索技術(shù)來獲取關(guān)鍵信息,而檢索技 術(shù)的優(yōu)劣直接決定了所檢索出的關(guān)鍵信息的數(shù)量、質(zhì)量以及更新等各個(gè)方面的性能需要。 在現(xiàn)有基于索引的檢索技術(shù)中,通常包括如下三方面內(nèi)容第一將索引和檢索放到一個(gè)進(jìn)程中。由于二者在一個(gè)進(jìn)程中同時(shí)存在,未剝離各 自的處理,因此,會(huì)互相影響彼此的性能。也就是說,在索引時(shí)由于占用較多的CPU,會(huì)導(dǎo)致 檢索性能存在瓶頸。第二 一個(gè)檢索只唯一對(duì)應(yīng)一個(gè)索引庫(kù)。由于索引和檢索不分離,并且沒有同步切 換機(jī)制,因此,在同步索引時(shí),當(dāng)前的檢索不能進(jìn)行服務(wù),即索引時(shí)會(huì)導(dǎo)致檢索服務(wù)中斷; 并且每次哪怕只更新一篇數(shù)據(jù),也需要對(duì)整個(gè)索引進(jìn)行重建、更新,會(huì)對(duì)數(shù)據(jù)更新的速度有 所限制。第三單線程檢索一個(gè)數(shù)據(jù)量較大的索引庫(kù)或多個(gè)索引庫(kù)。由于倒排表過大會(huì)導(dǎo) 致運(yùn)算量的增加,因此,導(dǎo)致單次檢索的響應(yīng)時(shí)間相應(yīng)增加,從而導(dǎo)致整體檢索性能不高。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種提高檢索速度的系統(tǒng)及方法,能提高 用戶基于索引對(duì)關(guān)鍵信息的檢索速度。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種提高檢索速度的系統(tǒng),該系統(tǒng)包括索引過程的實(shí)現(xiàn)單元和檢索過程的實(shí)現(xiàn) 單元;其中,索引過程的實(shí)現(xiàn)單元,用于實(shí)現(xiàn)索引過程;檢索過程的實(shí)現(xiàn)單元,用于實(shí)現(xiàn)檢索過程;所述索引過程的實(shí)現(xiàn)單元、與所述檢索過程的實(shí)現(xiàn)單元運(yùn)行在不同的進(jìn)程中,各 自的索引實(shí)現(xiàn)過程和檢索實(shí)現(xiàn)過程相互獨(dú)立。其中,所述索引過程的實(shí)現(xiàn)單元與所述檢索過程的實(shí)現(xiàn)單元之間為一對(duì)多的對(duì)應(yīng) 關(guān)系;所述索引過程的實(shí)現(xiàn)單元,進(jìn)一步用于將存儲(chǔ)的數(shù)據(jù)通過網(wǎng)絡(luò)同步到相對(duì)應(yīng)的多 個(gè)檢索過程的實(shí)現(xiàn)單元中,實(shí)現(xiàn)數(shù)據(jù)的同步更新;其中,與同一個(gè)索引過程的實(shí)現(xiàn)單元相對(duì) 應(yīng)的多個(gè)檢索過程的實(shí)現(xiàn)單元之間,存儲(chǔ)的數(shù)據(jù)相同且互為備份。其中,所述索引過程的實(shí)現(xiàn)單元,進(jìn)一步包括數(shù)據(jù)接收線程、重建控制線程、索引 重建線程、更新線程和索引數(shù)據(jù)發(fā)送線程;其中,
數(shù)據(jù)接收線程,用于接收索引數(shù)據(jù)源;索引重建線程,用于在重建控制線程的調(diào)度下,將根據(jù)索引數(shù)據(jù)源已經(jīng)建立的索 引庫(kù)進(jìn)行索引重建;重建控制線程,用于對(duì)索引重建線程執(zhí)行的索引重建進(jìn)行調(diào)度控制;更新線程,用于收到數(shù)據(jù)接收線程發(fā)送的索引數(shù)據(jù)源更新通知后,啟動(dòng)索引數(shù)據(jù) 的更新操作;索引數(shù)據(jù)發(fā)送線程,用于在索引庫(kù)建立完成后,將索引庫(kù)中的索引數(shù)據(jù)通過網(wǎng)絡(luò) 同步全部發(fā)送到所述檢索過程的實(shí)現(xiàn)單元,由當(dāng)前的索引進(jìn)程進(jìn)入到檢索進(jìn)程處理。其中,所述重建控制線程,進(jìn)一步用于根據(jù)索引相關(guān)指標(biāo)產(chǎn)生需要重建的任務(wù);其 中,所述索引相關(guān)指標(biāo)包括索引庫(kù)建立的情況、索引數(shù)據(jù)的數(shù)量、或時(shí)間間隔中的至少一 種。其中,所述重建控制線程,進(jìn)一步用于將所述需要重建的任務(wù)壓進(jìn)等待重建隊(duì)列; 以及檢測(cè)到重建完成隊(duì)列中的完成信息時(shí)刪除本次任務(wù);所述索引重建線程,進(jìn)一步用于當(dāng)檢測(cè)到等待重建隊(duì)列中有所述需要重建的任務(wù) 時(shí),將所述需要重建的任務(wù)從等待重建隊(duì)列中取出進(jìn)行重建;以及重建完成后將完成信息 壓入重建完成隊(duì)列完成一次重建。其中,所述檢索過程的實(shí)現(xiàn)單元,進(jìn)一步包括接收線程、檢索拆分線程、檢索處理 線程、和返回線程;其中,接收線程,用于接收檢索請(qǐng)求,并以隊(duì)列的方式,將多個(gè)檢索請(qǐng)求壓入檢索請(qǐng)求隊(duì) 列;檢索拆分線程,用于拆分所述檢索請(qǐng)求隊(duì)列,并將檢索請(qǐng)求隊(duì)列中的多個(gè)檢索請(qǐng) 求拆分到索引庫(kù)中的各個(gè)塊;檢索處理線程為多個(gè),用于采用索引庫(kù)中的各個(gè)塊,對(duì)多個(gè)檢索請(qǐng)求分別進(jìn)行分 塊處理;返回線程,用于對(duì)多個(gè)檢索請(qǐng)求分別進(jìn)行分塊處理后,將分塊處理完的數(shù)據(jù)重新 合并,裝載入檢索返回隊(duì)列并返回。其中,所述索引庫(kù)包括歷史索引庫(kù)和新數(shù)據(jù)索引庫(kù);其中,所述歷史索引庫(kù)用于 檢索服務(wù)時(shí)使用;所述新數(shù)據(jù)索引庫(kù)用于索引數(shù)據(jù)更新時(shí)使用。其中,所述歷史索引庫(kù)和所述新數(shù)據(jù)索引庫(kù)中的索引數(shù)據(jù)都采用分塊方式進(jìn)行存 儲(chǔ);其中,所述歷史索引庫(kù)采用取模方式劃分塊,并以大塊為單位存儲(chǔ);所述新數(shù)據(jù)索 引庫(kù)采用時(shí)間方式劃分塊,并以小塊為單位存儲(chǔ)。一種提高檢索速度的方法,該方法包括將索引與檢索分離,所述索引與所述檢索 分別運(yùn)行在不同的進(jìn)程中。其中,所述索引與所述檢索之間為一對(duì)多的關(guān)系;與當(dāng)前同一個(gè)索引相對(duì)應(yīng)的多個(gè)檢索之間,存儲(chǔ)的數(shù)據(jù)相同且互為備份;當(dāng)前索 引中存儲(chǔ)的數(shù)據(jù)通過網(wǎng)絡(luò)同步到相對(duì)應(yīng)的多個(gè)檢索中,實(shí)現(xiàn)數(shù)據(jù)的同步更新。其中,所述索引的實(shí)現(xiàn)過程具體包括根據(jù)數(shù)據(jù)接收線程接收的索引數(shù)據(jù)源建立索引庫(kù);
索引重建線程在重建控制線程的調(diào)度下,將已經(jīng)建立的索引庫(kù)進(jìn)行索引重建;更新線程收到數(shù)據(jù)接收線程發(fā)送的索引數(shù)據(jù)源更新通知后,啟動(dòng)索引數(shù)據(jù)的更新 操作;索引數(shù)據(jù)發(fā)送線程在索引庫(kù)建立或重建完成后,將索引庫(kù)中的索引數(shù)據(jù)通過網(wǎng)絡(luò) 同步全部提供給檢索服務(wù),并由當(dāng)前的索引進(jìn)程進(jìn)入到檢索進(jìn)程處理。其中,所述索引重建線程將已經(jīng)建立的索引庫(kù)進(jìn)行所述索引重建,具體包括根據(jù)索引相關(guān)指標(biāo)產(chǎn)生需要重建的任務(wù);其中,所述索引相關(guān)指標(biāo)包括索引庫(kù)建 立的情況、索引數(shù)據(jù)的數(shù)量、或時(shí)間間隔中的至少一種;重建控制線程將所述需要重建的任務(wù)壓進(jìn)等待重建隊(duì)列;當(dāng)索引重建線程檢測(cè)到 等待重建隊(duì)列中有所述需要重建的任務(wù)時(shí),將所述需要重建的任務(wù)從等待重建隊(duì)列中取出 進(jìn)行重建;索引重建線程重建完成后,將完成信息壓入重建完成隊(duì)列完成一次重建;當(dāng)重建 控制線程檢測(cè)到重建完成隊(duì)列中的完成信息時(shí),刪除本次任務(wù)。其中,所述檢索的實(shí)現(xiàn)過程具體包括接收線程接收檢索請(qǐng)求,并以隊(duì)列的方式,將多個(gè)檢索請(qǐng)求壓入檢索請(qǐng)求隊(duì)列;檢索拆分線程拆分所述檢索請(qǐng)求隊(duì)列,并將檢索請(qǐng)求隊(duì)列中的多個(gè)檢索請(qǐng)求拆分 到索引庫(kù)中的各個(gè)塊;多個(gè)檢索處理線程采用索引庫(kù)中的各個(gè)塊,對(duì)多個(gè)檢索請(qǐng)求分別進(jìn)行分塊處理;返回線程對(duì)多個(gè)檢索請(qǐng)求分別進(jìn)行分塊處理后,將分塊處理完的數(shù)據(jù)重新合并, 裝載入檢索返回隊(duì)列并返回。其中,所述索引庫(kù)包括歷史索引庫(kù)和新數(shù)據(jù)索引庫(kù);所述歷史索引庫(kù)和所述新數(shù)據(jù)索引庫(kù)都采用分塊處理;其中,歷史索引庫(kù)以取模 方式進(jìn)行分塊,并采用大塊為單位分成多塊;新數(shù)據(jù)索引庫(kù)以時(shí)間方式進(jìn)行分塊,并采用小 塊為單位分成多塊。本發(fā)明將索引與檢索分離,索引與檢索分別運(yùn)行在不同的進(jìn)程中。采用本發(fā)明,由于索引與檢索分離,索引的執(zhí)行過程與檢索的執(zhí)行過程,分別運(yùn)行 在不同的進(jìn)程中,因此,各自的索引實(shí)現(xiàn)過程和檢索實(shí)現(xiàn)過程相互獨(dú)立,在索引時(shí)并不會(huì)影 響到檢索的性能,從而提高了檢索速度。


圖1為本發(fā)明實(shí)例一的索引與檢索分離的系統(tǒng)架構(gòu)示意圖;圖2為本發(fā)明實(shí)例二的索引示意圖;圖3為本發(fā)明實(shí)例三的索引庫(kù)的結(jié)構(gòu)示意圖;圖4為圖3中索引庫(kù)中數(shù)據(jù)更新的結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)例四的索引重建的調(diào)度控制示意圖;圖6為本發(fā)明實(shí)例五的檢索示意圖。
具體實(shí)施例方式本發(fā)明的基本思想是將索引與檢索分離,索引與檢索分別運(yùn)行在不同的進(jìn)程中。下面結(jié)合附圖對(duì)技術(shù)方案的實(shí)施作進(jìn)一步的詳細(xì)描述。
本發(fā)明是一種提高檢索速度的方案,主要是通過索引庫(kù)分級(jí),以及索引和檢索分 離,從而實(shí)現(xiàn)快速檢索,從而提高了檢索速度。進(jìn)一步地,由于現(xiàn)有技術(shù)除了檢索速度不高,整體檢索性能不好的缺點(diǎn)之外,還存 在檢索和數(shù)據(jù)更新性能不同步的缺點(diǎn),即為檢索速度快時(shí),新數(shù)據(jù)更新速度慢;或者,新 數(shù)據(jù)更新速度快時(shí),但是檢索速度比較慢、或者時(shí)慢時(shí)快。本發(fā)明也解決了現(xiàn)有技術(shù)這個(gè)不 同步的缺點(diǎn),是一種在提高檢索速度的基礎(chǔ)上,同時(shí)提高數(shù)據(jù)更新速度的方案,主要是通過 索引庫(kù)分塊,包括互相獨(dú)立的歷史索引庫(kù)分塊和新數(shù)據(jù)索引庫(kù)分塊,從而實(shí)現(xiàn)新數(shù)據(jù)的快 速更新??傊?,采用本發(fā)明,能大幅提高檢索速度;大幅提高新數(shù)據(jù)更新的速度;以及在新 數(shù)據(jù)快速更新的情況下,仍然保證較高的檢索速度。以下對(duì)本發(fā)明進(jìn)行舉例描述。這里需要指出的是在索引與檢索分離的系統(tǒng)整體架構(gòu)中,邏輯結(jié)構(gòu)上主要分成 幾大部分,即用于實(shí)現(xiàn)檢索過程的部分——檢索過程的實(shí)現(xiàn)單元、和用于實(shí)現(xiàn)索引過程的 部分——索引過程的實(shí)現(xiàn)單元。即為在邏輯上將索引與檢索分離,以實(shí)現(xiàn)快速檢索。邏輯 結(jié)構(gòu)中還可以包括用于檢索代理的部分——檢索代理的實(shí)現(xiàn)單元、和用于檢索緩存的部 分——檢索緩存的實(shí)現(xiàn)單元。而且,本發(fā)明區(qū)別于現(xiàn)有技術(shù)中檢索與索引一一對(duì)應(yīng)的關(guān)系, 而是采用檢索與索引多對(duì)一的關(guān)系,即多個(gè)檢索對(duì)應(yīng)一個(gè)索引的方式,多個(gè)檢索之間互相 備份,從而避免了現(xiàn)有技術(shù)中檢索與索引一對(duì)一,彼此之間的操作不分離所導(dǎo)致的更新速 度慢、索引時(shí)中斷檢索服務(wù)等缺陷?;谏鲜鲞壿嫿Y(jié)構(gòu)的物理結(jié)構(gòu)有很多,以下僅以圖1所示的例子舉例描述如下。實(shí)例一索引與檢索分離。如圖1所示為索引與檢索分離的系統(tǒng)架構(gòu)示意圖,圖1中,檢索過程的實(shí)現(xiàn)單元具 體為檢索00和檢索01、以及檢索10和檢索11 ;索引過程的實(shí)現(xiàn)單元具體為索引0、索引1 ; 檢索代理的實(shí)現(xiàn)單元具體為檢索代理、檢索緩存的實(shí)現(xiàn)單元具體為檢索緩存。其中,索引0、索引1分別索引不同的數(shù)據(jù)。檢索00、檢索01裝有索引0提供的兩 份相同的索引數(shù)據(jù)。檢索10、檢索11裝有索引1提供的兩份相同的索引數(shù)據(jù)。對(duì)應(yīng)的索引 與檢索之間,比如檢索00、檢索01與索引0之間通過網(wǎng)絡(luò)同步,以保證索引數(shù)據(jù)的更新和 一致性。這里需要指出的是,圖1僅為基于上述邏輯結(jié)構(gòu)劃分描述的一個(gè)具體物理結(jié)構(gòu)上 的應(yīng)用,在實(shí)際應(yīng)用上并不限定只有2個(gè)檢索對(duì)應(yīng)一個(gè)索引的情況,可以是多個(gè)檢索對(duì)應(yīng) 一個(gè)索引,多個(gè)檢索之間相互備份,且多個(gè)檢索可以在一臺(tái)機(jī)器上設(shè)置,也可以在多臺(tái)機(jī)器 上分別設(shè)置。索引與檢索分離,使索引和檢索可以在不同進(jìn)程中存在,剝離了各自的處理進(jìn) 程,從而,不會(huì)互相影響彼此的性能,提高了檢索性能。實(shí)例二 如圖2所示為本實(shí)例的索引示意圖,主要包括數(shù)據(jù)接收線程、索引數(shù)據(jù) 發(fā)送線程、重建控制線程,索引重建線程、更新線程。其中,采用更新線程可以更新各種信 息,主要是對(duì)數(shù)值信息和文檔刪除等信息的更新。采用重建控制與索引重建線程,來實(shí)現(xiàn)索 引重建的調(diào)度控制詳見以下實(shí)例四的描述。從圖2中可以看出數(shù)據(jù)接收線程,一方面用于接收索引數(shù)據(jù)源,以提供建立索引 庫(kù)的數(shù)據(jù)源,即該數(shù)據(jù)源后續(xù)被建立為索引庫(kù);另一方面,數(shù)據(jù)接收線程用于源源不斷地 接收后續(xù)新的索引數(shù)據(jù)源,并通知更新線程啟動(dòng)索引數(shù)據(jù)的更新。索引重建線程,用于在重 建控制線程的調(diào)度下進(jìn)行索引重建,將舊的索引庫(kù)重建為新的索引庫(kù)。重建控制線程,用于調(diào)度控制索引重建。更新線程,用于收到數(shù)據(jù)接收線程的通知后,啟動(dòng)數(shù)據(jù)更新。索引數(shù)據(jù) 發(fā)送線程,用于在索引庫(kù)建立或重建完成后,將索引庫(kù)中的索引數(shù)據(jù)通過網(wǎng)絡(luò)同步全部發(fā) 送給圖1所示的檢索部分,由當(dāng)前的索引進(jìn)程進(jìn)入到檢索進(jìn)程處理。需要指出的是本文中 涉及到“索引庫(kù)”的地方都是指包括歷史索引庫(kù)和新數(shù)據(jù)索引庫(kù)的索引庫(kù)。圖2中,索引重建線程包括索引重建線程0和索引重建線程1。需要指出的是,實(shí) 際應(yīng)用中不局限于圖2中索引重建線程1,在舊的歷史索引庫(kù)和新的歷史索引庫(kù)之間的索 引重建;以及索引重建線程0在舊的新數(shù)據(jù)索引庫(kù)和新的新數(shù)據(jù)索引庫(kù)之間的索引重建。 索引重建線程0、索引重建線程1可以交換使用,比如由索引重建線程0,在舊的歷史索引庫(kù) 和新的歷史索引庫(kù)之間的索引重建。其中,舊的歷史索引庫(kù)如圖2中索引重建線程1下方 所示,新的歷史索引庫(kù)如圖2中索引重建線程1上方所示;同樣的,舊的新數(shù)據(jù)索引庫(kù)如圖 2中索引重建線程0下方所示,新的新數(shù)據(jù)索引庫(kù)如圖2中索引重建線程0上方所示。此 處的“舊”指未處理的索引庫(kù),比如舊的新數(shù)據(jù)索引庫(kù)即為初始建立的未處理的索引庫(kù); 此處的“新”指已經(jīng)處理完成的索引庫(kù),比如新的歷史索引庫(kù)指更新后已經(jīng)處理完成的索引 庫(kù)。而且,無論歷史索引庫(kù)還是新數(shù)據(jù)索引庫(kù)都采用分塊處理,不同的是歷史索引庫(kù) 采用“大塊”為單位分成多塊,而且是以取模方式進(jìn)行分塊;新數(shù)據(jù)索引庫(kù)采用“小塊”為單 位分成多塊,而且是以時(shí)間方式進(jìn)行分塊。這里,分塊的目的可以充分利用多個(gè)CPU進(jìn)行多 任務(wù)的分別處理。其中,就“大塊”分塊而言,它是與檢索有關(guān)的,多個(gè)CPU對(duì)不同的“大塊” 分別處理,能提高檢索速度;就“小塊”分塊而言,它是與數(shù)據(jù)更新有關(guān)的,多個(gè)CPU對(duì)不同 的“小塊”分別處理,能提高數(shù)據(jù)更新速度。因?yàn)?,采用分塊的處理不僅能實(shí)現(xiàn)多任務(wù)的分 別處理,而且將現(xiàn)有技術(shù)中的一整個(gè)存儲(chǔ)區(qū)域,進(jìn)一步分成一個(gè)個(gè)的塊狀存儲(chǔ)區(qū)域,在索引 重建和數(shù)據(jù)更新時(shí)由于所針對(duì)的處理區(qū)域變小,勢(shì)必會(huì)增加檢索或數(shù)據(jù)更新的速度。用于 數(shù)據(jù)更新的“小塊”也是有限的個(gè)數(shù),當(dāng)“小塊”快滿的時(shí)候,為了提高數(shù)據(jù)更新速度,可以 將“小塊”劃分的新數(shù)據(jù)索引庫(kù)中,已經(jīng)通過“小塊”處理完的數(shù)據(jù)置入“大塊”劃分的歷史 數(shù)據(jù)庫(kù)中,清空處理完數(shù)據(jù)的“小塊”。具體的,采用分塊處理的歷史索引庫(kù)和新數(shù)據(jù)索引庫(kù) 的結(jié)構(gòu)詳見以下圖3、圖4所揭示的實(shí)例三的描述。實(shí)例三如圖3所示為本實(shí)例的索引庫(kù)的結(jié)構(gòu)示意圖,索引庫(kù)主要分為兩大塊,歷 史索引庫(kù)和新數(shù)據(jù)索引庫(kù)。其中,歷史索引庫(kù)按照Docid取模方式被分塊為幾“大塊”。每 一塊都有大致相等的數(shù)據(jù)。新數(shù)據(jù)索引庫(kù)按照時(shí)間方式被分塊為幾“小塊”,但是每塊的最 大容量數(shù)據(jù)相等。數(shù)據(jù)按照進(jìn)入的先后順序劃分,允許部分塊數(shù)據(jù)為空。歷史索引庫(kù)和新 數(shù)據(jù)索引庫(kù)是可以根據(jù)數(shù)據(jù)的具體情況進(jìn)行配置的。針對(duì)配置而言,按照庫(kù)的個(gè)數(shù)進(jìn)行配置,配置的操作主要與數(shù)據(jù)量、機(jī)器CPU個(gè) 數(shù)、磁盤,內(nèi)存大小以及數(shù)據(jù)特征、數(shù)據(jù)更新速度要求有關(guān)。原則是充分利用好機(jī)器資源。 相對(duì)于歷史索引庫(kù)來說,新數(shù)據(jù)索引庫(kù)也可以稱為小庫(kù),小庫(kù)數(shù)據(jù)越多,數(shù)據(jù)更新速度會(huì)更 快。針對(duì)歷史索引庫(kù)的切分而言,歷史索引庫(kù)的切分只是在最終索引完成后切成幾 “大塊”,且歷史索引庫(kù)與新數(shù)據(jù)索引庫(kù)是完全互相獨(dú)立的。其中,無論歷史索引庫(kù)還是新數(shù) 據(jù)索引庫(kù),其中的索引數(shù)據(jù)都包含倒排索引,倒排表,刪除信息,數(shù)值信息,庫(kù)信息等各種 數(shù)據(jù)。而最終的倒排表被分為兩塊,第一塊是好數(shù)據(jù),第二塊是劣質(zhì)數(shù)據(jù)。好數(shù)據(jù)的區(qū)分可以根據(jù)文本相關(guān)性或文檔的數(shù)值屬性評(píng)級(jí)來劃分。索引庫(kù)結(jié)構(gòu)中提及好、壞數(shù)據(jù)的劃分,不 局限于兩塊??梢允嵌鄩K。劃分也可以是一個(gè)綜合評(píng)分。這里,針對(duì)綜合評(píng)分而言,綜合評(píng) 分可以根據(jù)文本的數(shù)值、文本內(nèi)容等計(jì)算綜合文本權(quán)重。如圖4所示為圖3中索引庫(kù)中數(shù)據(jù)更新的結(jié)構(gòu)示意圖,揭示的內(nèi)容為在新數(shù)據(jù)索 引庫(kù)“小塊”快滿時(shí),將“小塊”處理完的數(shù)據(jù)置入歷史索引庫(kù)并清空“小塊”,以便重新開始 建立新數(shù)據(jù)索引庫(kù)。圖3中,左斜線的陰影填充表示歷史索引庫(kù)中的各個(gè)“大塊”;斜線交叉的陰影填 充表示新數(shù)據(jù)索引庫(kù)中已經(jīng)處理完成的“小塊”;右斜線的陰影填充表示新數(shù)據(jù)索引庫(kù)中的 正在處理的“小塊”。圖4中,左斜線的陰影填充表示歷史索引庫(kù)中初始的各個(gè)“大塊”;橫 豎交叉的陰影填充表示將新數(shù)據(jù)索引庫(kù)中已經(jīng)處理完成的“小塊”置入歷史索引庫(kù)后,形成 歷史索引庫(kù)中新的“大塊”;斜線交叉的陰影填充表示新數(shù)據(jù)索引庫(kù)中已經(jīng)處理完成的“小 塊”在置入歷史索引庫(kù)后,清空的當(dāng)前“小塊”;右斜線的陰影填充表示新數(shù)據(jù)索引庫(kù)中正在 處理的“小塊”。針對(duì)以上圖3、圖4,對(duì)索引的建立描述如下假設(shè)圖3表示新數(shù)據(jù)索引庫(kù)已經(jīng)建到第2 “小塊”,超過了總塊數(shù)3塊的一半。那 么圖4表示,歷史索引庫(kù)將新數(shù)據(jù)索引庫(kù)中的0,1的數(shù)據(jù)也建立了索引,并分成了圖4下面 箭頭所切分的四塊。而新數(shù)據(jù)索引庫(kù)中以前的0,1所擁有的資源可以利用來建立新的數(shù)據(jù) 的索引。這樣就保證新數(shù)據(jù)即時(shí)建立索引的可能。歷史索引庫(kù)將新數(shù)據(jù)索引庫(kù)的索引建立 完成后,將索引數(shù)據(jù)通過網(wǎng)絡(luò)全部發(fā)送給圖1所示的檢索部分;發(fā)送完成后,由索引進(jìn)程切 換到檢索進(jìn)程,并通知該檢索部分切換成最新索引數(shù)據(jù)進(jìn)行檢索服務(wù)。實(shí)例四如圖5所示為本實(shí)例的索引重建的調(diào)度控制示意圖;圖5中,主要包括: 重建控制線程、等待重建隊(duì)列、重建完成隊(duì)列和索引重建線程。其中,重建控制線程根據(jù)索 引建立的情況,數(shù)據(jù)多少和時(shí)間間隔等產(chǎn)生需要重建的任務(wù)。本實(shí)例中兩個(gè)索引重建線程的優(yōu)先級(jí)是相等的。即兩個(gè)索引重建線程都有可能負(fù) 責(zé)重建歷史索引庫(kù)和新數(shù)據(jù)索引庫(kù)。在重建過程中每個(gè)級(jí)別的索引庫(kù)同時(shí)只能有一個(gè)任 務(wù)在運(yùn)行。從圖5中可以看出索引重建的調(diào)度控制過程為重建控制線程將需要重建的任 務(wù)壓進(jìn)等待重建隊(duì)列;索引重建線程檢測(cè)等待重建隊(duì)列,當(dāng)檢測(cè)到有重建的任務(wù)時(shí)將該任 務(wù)從等待重建隊(duì)列中取出進(jìn)行重建;重建完成后將完成信息壓入重建完成隊(duì)列完成一次重 建。重建控制線程檢測(cè)重建完成隊(duì)列,如果檢測(cè)到完成信息則刪除該次完成任務(wù)。等待下 一次重建任務(wù)的開始。實(shí)例五如圖6所示為本實(shí)例的檢索示意圖,圖6中,主要包括接收線程、返回線 程、檢索請(qǐng)求隊(duì)列、檢索返回隊(duì)列、檢索拆分線程、由多個(gè)分塊處理線程所構(gòu)成的多個(gè)檢索 處理線程。其中,接收線程用于接收檢索請(qǐng)求,并以隊(duì)列的方式,將多個(gè)檢索請(qǐng)求按照先后 順序壓入檢索請(qǐng)求隊(duì)列。檢索拆分線程用于依序提取出隊(duì)列中的檢索請(qǐng)求,分別對(duì)應(yīng)到各 個(gè)索引庫(kù),即為將檢索請(qǐng)求隊(duì)列拆分到各個(gè)相對(duì)應(yīng)的索引庫(kù)。分塊處理線程針對(duì)各個(gè)索引 庫(kù)中的塊分別處理檢索請(qǐng)求;且在處理檢索請(qǐng)求時(shí)可以進(jìn)行索引切換,實(shí)現(xiàn)主、備索引之間 的切換。返回線程用于在針對(duì)各個(gè)索引庫(kù)中的塊分別處理檢索請(qǐng)求后,將針對(duì)檢索請(qǐng)求處 理完的數(shù)據(jù)重新接收及裝載后返回前端的檢索代理。其中,在索引切換時(shí),由于本發(fā)明是將 索引庫(kù)分塊的處理,因此,每個(gè)索引庫(kù)獨(dú)立,并不需要現(xiàn)有技術(shù)中一一對(duì)應(yīng)的主、備索引,比如,可以采用4個(gè)歷史索引庫(kù)對(duì)應(yīng)一個(gè)備份的情況。從圖6中可以看出檢索過程為將檢索請(qǐng)求分成對(duì)應(yīng)的歷史索引庫(kù)和新數(shù)據(jù)索引 庫(kù)各個(gè)塊的檢索請(qǐng)求。雖然歷史索引庫(kù)和新數(shù)據(jù)索引庫(kù)這兩種庫(kù)分塊的方式不一樣,有“大 塊”和“小塊”劃分之分,但是最終的索引文件都是獨(dú)立的。索引的各個(gè)檢索處理線程也是 同等的,可以處理任何一個(gè)塊的數(shù)據(jù),各個(gè)檢索處理線程競(jìng)爭(zhēng)地從隊(duì)列中不斷取出請(qǐng)求進(jìn) 行處理,最終處理完的檢索處理線程將結(jié)果合并后放到檢索返回隊(duì)列進(jìn)行發(fā)送。中間結(jié)果 緩存主要緩存部分檢索結(jié)果的Docid列表。綜上所述,采用本發(fā)明,能減少運(yùn)算成本。對(duì)分塊的索引庫(kù),多任務(wù)、多個(gè)線程的同 時(shí)處理不僅可以充分利用CPU,更因?yàn)閷⑺饕蜋z索分離后,倒排表都相應(yīng)縮小。單個(gè)線程 的計(jì)算量也明顯減少。從而整體迅速提高檢索性能和數(shù)據(jù)更新速度。需要指出的是上述檢索過程中,是采用多線程的處理,而且是一個(gè)檢索拆分線程 對(duì)應(yīng)多個(gè)檢索處理線程。該檢索過程中的線程模型也可以變?yōu)閱尉€程順序檢索各個(gè)庫(kù),由 于本發(fā)明的庫(kù)采用分塊處理,每個(gè)塊中數(shù)據(jù)量較小,因此區(qū)別于現(xiàn)有技術(shù)中單線程的檢索 數(shù)據(jù)量巨大的完整的庫(kù),從而也能提高檢索速度。還有一種方式是可以設(shè)置多個(gè)檢索拆分 線程,即多個(gè)檢索拆分線程對(duì)應(yīng)一個(gè)檢索處理線程;多個(gè)檢索拆分線程將任務(wù)分派給處 理檢索處理線程,并接收檢索處理線程的結(jié)果,匯總后發(fā)送。這里,對(duì)以上涉及到的某些特指文字的含義進(jìn)行解釋說明如下所謂索引指對(duì)數(shù)據(jù)進(jìn)行編碼、順排、倒排處理,最終生成倒排索引和各種倒排文 件。所謂檢索指對(duì)外根據(jù)用戶請(qǐng)求串,提供檢索服務(wù)。所謂檢索代理指合并多個(gè)檢索的結(jié)果。所謂檢索緩存指緩存檢索的結(jié)果。所謂Docid指文檔的唯一編號(hào)。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種提高檢索速度的系統(tǒng),其特征在于,該系統(tǒng)包括索引過程的實(shí)現(xiàn)單元和檢索 過程的實(shí)現(xiàn)單元;其中,索引過程的實(shí)現(xiàn)單元,用于實(shí)現(xiàn)索引過程;檢索過程的實(shí)現(xiàn)單元,用于實(shí)現(xiàn)檢索過程;所述索引過程的實(shí)現(xiàn)單元、與所述檢索過程的實(shí)現(xiàn)單元運(yùn)行在不同的進(jìn)程中,各自的 索引實(shí)現(xiàn)過程和檢索實(shí)現(xiàn)過程相互獨(dú)立。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述索引過程的實(shí)現(xiàn)單元與所述檢索過 程的實(shí)現(xiàn)單元之間為一對(duì)多的對(duì)應(yīng)關(guān)系;所述索引過程的實(shí)現(xiàn)單元,進(jìn)一步用于將存儲(chǔ)的數(shù)據(jù)通過網(wǎng)絡(luò)同步到相對(duì)應(yīng)的多個(gè)檢 索過程的實(shí)現(xiàn)單元中,實(shí)現(xiàn)數(shù)據(jù)的同步更新;其中,與同一個(gè)索引過程的實(shí)現(xiàn)單元相對(duì)應(yīng)的 多個(gè)檢索過程的實(shí)現(xiàn)單元之間,存儲(chǔ)的數(shù)據(jù)相同且互為備份。
3.根據(jù)權(quán)利要求2所述的系統(tǒng),其特征在于,所述索引過程的實(shí)現(xiàn)單元,進(jìn)一步包括 數(shù)據(jù)接收線程、重建控制線程、索引重建線程、更新線程和索引數(shù)據(jù)發(fā)送線程;其中,數(shù)據(jù)接收線程,用于接收索引數(shù)據(jù)源;索引重建線程,用于在重建控制線程的調(diào)度下,將根據(jù)索引數(shù)據(jù)源已經(jīng)建立的索引庫(kù) 進(jìn)行索引重建;重建控制線程,用于對(duì)索引重建線程執(zhí)行的索引重建進(jìn)行調(diào)度控制;更新線程,用于收到數(shù)據(jù)接收線程發(fā)送的索引數(shù)據(jù)源更新通知后,啟動(dòng)索引數(shù)據(jù)的更 新操作;索引數(shù)據(jù)發(fā)送線程,用于在索引庫(kù)建立完成后,將索引庫(kù)中的索引數(shù)據(jù)通過網(wǎng)絡(luò)同步 全部發(fā)送到所述檢索過程的實(shí)現(xiàn)單元,由當(dāng)前的索引進(jìn)程進(jìn)入到檢索進(jìn)程處理。
4.根據(jù)權(quán)利要求3所述的系統(tǒng),其特征在于,所述重建控制線程,進(jìn)一步用于根據(jù)索引 相關(guān)指標(biāo)產(chǎn)生需要重建的任務(wù);其中,所述索引相關(guān)指標(biāo)包括索引庫(kù)建立的情況、索引數(shù)據(jù) 的數(shù)量、或時(shí)間間隔中的至少一種。
5.根據(jù)權(quán)利要求4所述的系統(tǒng),其特征在于,所述重建控制線程,進(jìn)一步用于將所述 需要重建的任務(wù)壓進(jìn)等待重建隊(duì)列;以及檢測(cè)到重建完成隊(duì)列中的完成信息時(shí)刪除本次任 務(wù);所述索引重建線程,進(jìn)一步用于當(dāng)檢測(cè)到等待重建隊(duì)列中有所述需要重建的任務(wù)時(shí), 將所述需要重建的任務(wù)從等待重建隊(duì)列中取出進(jìn)行重建;以及重建完成后將完成信息壓入 重建完成隊(duì)列完成一次重建。
6.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述檢索過程的實(shí)現(xiàn)單元,進(jìn)一步包括 接收線程、檢索拆分線程、檢索處理線程、和返回線程;其中,接收線程,用于接收檢索請(qǐng)求,并以隊(duì)列的方式,將多個(gè)檢索請(qǐng)求壓入檢索請(qǐng)求隊(duì)列;檢索拆分線程,用于拆分所述檢索請(qǐng)求隊(duì)列,并將檢索請(qǐng)求隊(duì)列中的多個(gè)檢索請(qǐng)求拆 分到索引庫(kù)中的各個(gè)塊;檢索處理線程為多個(gè),用于采用索引庫(kù)中的各個(gè)塊,對(duì)多個(gè)檢索請(qǐng)求分別進(jìn)行分塊處理;返回線程,用于對(duì)多個(gè)檢索請(qǐng)求分別進(jìn)行分塊處理后,將分塊處理完的數(shù)據(jù)重新合并, 裝載入檢索返回隊(duì)列并返回。
7.根據(jù)權(quán)利要求3至6中任一項(xiàng)所述的系統(tǒng),其特征在于,所述索引庫(kù)包括歷史索引 庫(kù)和新數(shù)據(jù)索引庫(kù);其中,所述歷史索引庫(kù)用于檢索服務(wù)時(shí)使用;所述新數(shù)據(jù)索引庫(kù)用于 索引數(shù)據(jù)更新時(shí)使用。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述歷史索引庫(kù)和所述新數(shù)據(jù)索引庫(kù)中 的索引數(shù)據(jù)都采用分塊方式進(jìn)行存儲(chǔ);其中,所述歷史索引庫(kù)采用取模方式劃分塊,并以大塊為單位存儲(chǔ);所述新數(shù)據(jù)索引庫(kù) 采用時(shí)間方式劃分塊,并以小塊為單位存儲(chǔ)。
9.一種提高檢索速度的方法,其特征在于,該方法包括將索引與檢索分離,所述索引 與所述檢索分別運(yùn)行在不同的進(jìn)程中。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述索引與所述檢索之間為一對(duì)多的關(guān)系;與當(dāng)前同一個(gè)索引相對(duì)應(yīng)的多個(gè)檢索之間,存儲(chǔ)的數(shù)據(jù)相同且互為備份;當(dāng)前索引中 存儲(chǔ)的數(shù)據(jù)通過網(wǎng)絡(luò)同步到相對(duì)應(yīng)的多個(gè)檢索中,實(shí)現(xiàn)數(shù)據(jù)的同步更新。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,所述索引的實(shí)現(xiàn)過程具體包括 根據(jù)數(shù)據(jù)接收線程接收的索引數(shù)據(jù)源建立索引庫(kù);索引重建線程在重建控制線程的調(diào)度下,將已經(jīng)建立的索引庫(kù)進(jìn)行索引重建; 更新線程收到數(shù)據(jù)接收線程發(fā)送的索引數(shù)據(jù)源更新通知后,啟動(dòng)索引數(shù)據(jù)的更新操作;索引數(shù)據(jù)發(fā)送線程在索引庫(kù)建立或重建完成后,將索引庫(kù)中的索引數(shù)據(jù)通過網(wǎng)絡(luò)同步 全部提供給檢索服務(wù),并由當(dāng)前的索引進(jìn)程進(jìn)入到檢索進(jìn)程處理。
12.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述索引重建線程將已經(jīng)建立的索引 庫(kù)進(jìn)行所述索引重建,具體包括根據(jù)索引相關(guān)指標(biāo)產(chǎn)生需要重建的任務(wù);其中,所述索引相關(guān)指標(biāo)包括索引庫(kù)建立的 情況、索引數(shù)據(jù)的數(shù)量、或時(shí)間間隔中的至少一種;重建控制線程將所述需要重建的任務(wù)壓進(jìn)等待重建隊(duì)列;當(dāng)索引重建線程檢測(cè)到等待 重建隊(duì)列中有所述需要重建的任務(wù)時(shí),將所述需要重建的任務(wù)從等待重建隊(duì)列中取出進(jìn)行 重建;索引重建線程重建完成后,將完成信息壓入重建完成隊(duì)列完成一次重建;當(dāng)重建控制 線程檢測(cè)到重建完成隊(duì)列中的完成信息時(shí),刪除本次任務(wù)。
13.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述檢索的實(shí)現(xiàn)過程具體包括 接收線程接收檢索請(qǐng)求,并以隊(duì)列的方式,將多個(gè)檢索請(qǐng)求壓入檢索請(qǐng)求隊(duì)列;檢索拆分線程拆分所述檢索請(qǐng)求隊(duì)列,并將檢索請(qǐng)求隊(duì)列中的多個(gè)檢索請(qǐng)求拆分到索 引庫(kù)中的各個(gè)塊;多個(gè)檢索處理線程采用索引庫(kù)中的各個(gè)塊,對(duì)多個(gè)檢索請(qǐng)求分別進(jìn)行分塊處理; 返回線程對(duì)多個(gè)檢索請(qǐng)求分別進(jìn)行分塊處理后,將分塊處理完的數(shù)據(jù)重新合并,裝載 入檢索返回隊(duì)列并返回。
14.根據(jù)權(quán)利要求12至13中任一項(xiàng)所述的方法,其特征在于,所述索引庫(kù)包括歷史 索引庫(kù)和新數(shù)據(jù)索引庫(kù);所述歷史索引庫(kù)和所述新數(shù)據(jù)索引庫(kù)都采用分塊處理;其中,歷史索引庫(kù)以取模方式進(jìn)行分塊,并采用大塊為單位分成多塊;新數(shù)據(jù)索引庫(kù)以時(shí)間方式進(jìn)行分塊,并采用小塊為 單位分成多塊。
全文摘要
本發(fā)明公開了一種提高檢索速度的系統(tǒng),該系統(tǒng)中,索引過程的實(shí)現(xiàn)單元,用于實(shí)現(xiàn)索引過程;檢索過程的實(shí)現(xiàn)單元,用于實(shí)現(xiàn)檢索過程;索引過程的實(shí)現(xiàn)單元、與檢索過程的實(shí)現(xiàn)單元運(yùn)行在不同的進(jìn)程中,各自的索引實(shí)現(xiàn)過程和檢索實(shí)現(xiàn)過程相互獨(dú)立。本發(fā)明還公開了一種提高檢索速度的方法,該方法包括將索引與檢索分離,所述索引與所述檢索分別運(yùn)行在不同的進(jìn)程中。采用本發(fā)明的系統(tǒng)及方法,能提高用戶基于索引對(duì)關(guān)鍵信息的檢索速度。
文檔編號(hào)G06F17/30GK102103602SQ20091024285
公開日2011年6月22日 申請(qǐng)日期2009年12月17日 優(yōu)先權(quán)日2009年12月17日
發(fā)明者唐年鵬, 黃耀豪 申請(qǐng)人:騰訊科技(深圳)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1