一種支持多數據源的索引維護方法
2023-09-19 02:37:45 2
專利名稱::一種支持多數據源的索引維護方法
技術領域:
:本發明屬於搜尋引擎
技術領域:
,具體涉及一種索引庫更新維護方法。
背景技術:
:企業信息化產生了大量的原始信息或加工信息,如各種文本信息、多媒體信息等。這些信息中包含了用戶感興趣的各種內容,需要對這些信息進行有效存儲與檢索。這種信息檢索系統的主要特點一是,數據來源多,當原始信息產生之後,要求能夠儘快地進入檢索系統,並能夠被檢索;二是,用戶對信息檢索的響應時間有更高的要求,特別地索引庫的更新過程不能對用戶檢索的響應時間產生影響。三是,不同類型企業用戶在檢索過程中,可能對檢索的時間範圍有一定區別,有的要求對剛產生的數據能夠進行即時查詢,而有的要求能夠查詢歷史上某個時間段的數據。現有的搜尋引擎研究在海量信息處理、體系結構等方面已經有了很大的進展,如google公司發明的Bigtable等一系列技術[1],有效地解決了海量信息的分布式存儲與索引中的主要問題,為上層應用提供了統一的數據接口。在企業級的文本信息存儲與檢索技術方面,為了適應企業用戶對檢索響應時間的要求,人們提出了多種匹配算法、索引庫的組織方法以及軟體體系結構設計方法等。其中,索引庫的組織及其維護方法由於對檢索性能有較大的影響,而成為搜尋引擎設計的關鍵。歸納起來,主要有以下幾類方法一是,針對集中式環境下的索引結構,主要是基於倒排索引結構及其改進方法[2]。二是,針對分布式環境下的索引結構,在倒排結構的基礎上,對索引建立算法進行了分布式處理的增強[3,4]。這些方法在海量信息的存儲、索引管理以及提高檢索系統性能方面,起了關鍵作用。隨著用戶對檢索系統性能要求的不斷提高,人們需要在索引庫實時維護機制方面提出新的方法,以便在大量的索引庫中快速定位與選擇某次檢索所需要的索引庫片斷,避免在大索引庫中檢索記錄,同時避免索引庫更新過程對用戶檢索所造成的影響,進一步縮短用戶檢索的響應時間。而現有各種方法在解決這些需求時尚存在一定的不足,具體說明如下1.對多個數據源上的數據同時建立索引時,現有方法由於需要進行索引庫的不斷更新,而造成建立索引時產生延遲,從而影響用戶即時檢索的需要。2.由於索引的更新在一個大的索引庫上進行,因此,在更新期間容易發生用戶檢索無法進行的現象,或檢索請求的處理過程變慢。3.面對用戶在檢索過程中對時間範圍的限定,現有方法實際上還是在大的索引庫中進行,因此,檢索效率的提升是很有限的。由此可見,為了實現對多數據源進行索引創建,同時保證用戶檢索的響應時間不受影響,需要引入新的索引庫並發實時更新維護機制,才能有效克服目前存在的問題並滿足企業用戶需要。本發明的目的就是設計這樣的索引庫更新維護機制。
發明內容本發明的目的主要是針對搜尋引擎性能進一步改善的需要,提出一種新的索引庫維護方法。本發明基於對多個數據源同時建立索引的性能需求而提出一種索引庫維護方法。本發明針對索引伺服器中索引庫的組織方式、更新方法及檢索過程,將整個索引庫分為一系列子索引庫,每個子索引庫存儲一定時間粒度內的索引,子索引庫包含一個獨立的目錄及相關文件。本發明的總體流程如圖1。操作步驟分為三個流程,具體如下一.子索引庫的數據加載(1)生成新的子索引庫,並按照一定的命名方式對該子索引庫進行標識;(2)對該子索引庫進行加鎖;(3)按照建立索引結構的算法[5,6]創建數據對應的索引文件,實現數據加載;(4)子索引庫解鎖;(5)通知索引伺服器上的檢索請求處理進程,將該子索引庫標識為可用庫。二.子索引庫的合併(1)按照一定的時間間隔選擇需要合併的子索引庫;(2)生成新的子索引庫,並按照一定命名方式對該子索引庫進行標識;(3)對該子索引庫進行加鎖;(4)按照與索引結構相對應的索引合併算法[5,6]將所選擇的子索引庫合併,寫入到新的子索引庫;(5)子索引庫解鎖;(6)通知索引伺服器上的檢索請求處理進程,將所選擇的子索引庫標識為不可用,而將新的子索引庫標識為可用。三.用戶檢索請求的處理(1)從接收到的用戶檢索請求命令中,提取指定的時間範圍;(2)根據該時間範圍,選擇符合時間條件的子索引庫,作為處理當前檢索命令的索引庫;(3)執行檢索過程,並返回結果。支持多數據源的索引維護方法,其特徵在於對子索引庫具有如下的標識DATE1-DATE2,其中DATEl與DATE2分別表示索引庫中所包含的數據文件的最早與最遲的生成時間,格式均為yyyyYYDDHHMMSS,yyyy表示年份,YY表示月份,DD表示日,ⅠⅡⅠ表示小時數,ⅥM表示分鐘,SS表示秒數。本發明的支持多數據源的索引維護方法,索引合併具有靈活的時間粒度,即由G1、G2和G3表示不同時間粒度,對應的子索引庫具有如下特點SUB_SET1={siDATE2-DATE1>G1}SUB_SET2={siDATE2-DATE1>G2}SUB_SET3={siDATE2-DATE1>G3}其中,G1>G2>G3。本發明的支持多數據源的索引維護方法,用戶的檢索請求在合適的時間範圍子索引庫中進行;針對檢索請求所限定的查詢時間範圍[tl,t2],根據以下選擇方法選擇用於本次查詢的可用子索引列表tl<=DATEl<=t2或tl<=DATE2G1}SUB__SET2=IsiDATE2-DATE1>G2}SUB__SET3=IsiDATE2-DATE1>G3}其中,G1>G2>G3。Gl,G2,G3代表不同的時間粒度。(2)對所選擇的子索引庫集分別按照以下處理流程執行(a)在索引庫中建立相應的子目錄,將目錄名稱命名為DATE1-DATE2,其中DATEl與DATE2分別表示子索引庫集中各個子索引庫的最早與最遲時間標識;(b)在該子目錄中生成lock文件,表示該子索引庫處於加鎖狀態;(c)按照索引算法相對應的索引合併算法(具體的算法在本發明中沒有限制,可選用目前任何已有的算法,如針對倒排索引結構的合併算法[5,6]等),將所選擇的所有子索引庫合併,並寫入到新的子索引庫中;(d)刪除lock文件,表示該子索引庫處於解鎖狀態;(e)通知用戶檢索請求處理進程,將所選擇的子索引庫標識為不可用,而將新生成的子索引庫標識為可用;(f)刪除子索引庫集中的各個子索引庫。(3)轉本進程的流程(1)繼續執行,直到用戶終止該進程的運行。3、用戶檢索請求處理進程當產生新的用戶檢索請求時,該進程開始按照下面的流程執行(1)從檢索請求串中提取檢索所限定的查詢時間範圍[tl,t2];(2)根據時間範圍,選擇用於本次查詢的可用子索引列表,方法如下tl<=DATEl<=t2或tl<=DATE2G1}SUB__SET2=IsiDATE2-DATE1>G2}SUB__SET3=IsiDATE2-DATE1>G3}其中,G1>G2>G3。4.如權利要求3所述的支持多數據源的索引維護方法,其特徵在於用戶的檢索請求在合適的時間範圍子索引庫中進行;針對檢索請求所限定的查詢時間範圍[tl,t2],根據以下選擇方法選擇用於本次查詢的可用子索引列表tl<=DATEl<=t2或tl<=DATE2<=t2,其中DATEl和DATE2為各個子索引庫的標識。5.如權利要求1所述的支持多數據源的索引維護方法,其特徵在於子索引庫的數據加載過程中,通過產生加鎖文件的方式來避免合併進程對正在加載的子索引庫進行合併,也避免正在加載的子索引庫被用戶檢索處理進程選擇為檢索範圍。6.如權利要求1所述的支持多數據源的索引維護方法,其特徵在於子索引庫合併過程中,通過產生加鎖文件的方式來避免正在生成的新子索引庫被用戶檢索請求處理進程選擇為檢索範圍。全文摘要本發明屬於搜尋引擎
技術領域:
,具體涉及一種支持多數據源的索引維護方法。本發明將整個索引庫分為一系列子索引庫,每個子索引庫存儲一定時間粒度內的索引,子索引庫包含一個獨立的目錄及相關文件。操作步驟分為三個流程子索引庫的數據加載、子索引庫的合併、用戶檢索請求的處理。本發明通過設置子索引庫,便於實現索引的實時更新;通過設置合適的索引合併檢測周期,實現具有不同時間粒度的子索引庫互相共存;將用戶限定時間範圍的檢索請求映射到子索引庫上,索引的更新可以在獨立的子索引庫中進行而不影響用戶的檢索請求,從而保證響應時間滿足用戶要求。文檔編號G06F17/30GK101989301SQ201010515780公開日2011年3月23日申請日期2010年10月22日優先權日2010年10月22日發明者吳承榮,曾劍平申請人:復旦大學