數(shù)據(jù)存儲方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及數(shù)據(jù)檢索技術(shù)領(lǐng)域,特別是涉及數(shù)據(jù)存儲方法及裝置。
【背景技術(shù)】
[0002]為了提高檢索效率,服務(wù)器通常會為數(shù)據(jù)檢索所依據(jù)的數(shù)據(jù)建立索引,并將索引組織在一起,形成索引庫,其中,為數(shù)據(jù)檢索所依據(jù)的數(shù)據(jù)建立索引通常為從數(shù)據(jù)檢索所依據(jù)的數(shù)據(jù)中提取一些信息作為索引。舉例而言:對于一篇文檔,所對應(yīng)的索引為從該文檔中提取的文字內(nèi)容或者文檔的屬性參數(shù),文檔的屬性參數(shù)可以為:作者姓名,文檔類別,等等。
[0003]現(xiàn)有技術(shù)中,為了保證數(shù)據(jù)檢索效率,服務(wù)器通常在獲得所抓取的數(shù)據(jù)后,為所抓取的數(shù)據(jù)建立索引,進而,將所抓取的數(shù)據(jù)和索引保存在緩存中,以便后續(xù)需要執(zhí)行數(shù)據(jù)檢索時,直接依據(jù)緩存中所存儲的數(shù)據(jù)和索引來完成檢索。其中,通常通過網(wǎng)絡(luò)爬蟲來在網(wǎng)絡(luò)上抓取數(shù)據(jù)。
[0004]但是,由于將所抓取的數(shù)據(jù)和索引保存在緩存中,這樣會帶來如下問題:當服務(wù)器發(fā)生斷電或故障時,緩存中的相關(guān)數(shù)據(jù)會消失或存在異常,這樣無疑會影響數(shù)據(jù)檢索過程的有效進行。可見,如何實現(xiàn)數(shù)據(jù)檢索所依據(jù)的相關(guān)數(shù)據(jù)的持久性是一個亟待解決的問題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施例的目的在于提供一種數(shù)據(jù)存儲方法及裝置,以實現(xiàn)數(shù)據(jù)檢索所依據(jù)的相關(guān)數(shù)據(jù)的持久性。具體技術(shù)方案如下:
[0006]第一方面,本發(fā)明實施例提供了一種數(shù)據(jù)存儲方法,應(yīng)用于服務(wù)器中,所述方法包括:
[0007]獲得已抓取的數(shù)據(jù),對所述已抓取的數(shù)據(jù)建立索引;
[0008]將所述已抓取的數(shù)據(jù)及所述索引保存在緩存中;
[0009]判斷是否滿足備份條件,如果滿足,則將所述緩存中的所述已抓取的數(shù)據(jù)及所述索引保存到硬盤中進行備份。
[0010]可選的,所述方法還包括:
[0011]在所述緩存中的所述已抓取的數(shù)據(jù)及所述索引消失后,將所述硬盤中備份的所述已抓取的數(shù)據(jù)及所述索引復制到所述緩存中。
[0012]可選的,所述將所述緩存中的所述已抓取的數(shù)據(jù)及所述索引保存到硬盤中進行備份,包括:對所述緩存中的已抓取的數(shù)據(jù)及所述索引進行序列化處理,將序列化處理后生成的文件保存到硬盤中進行備份;
[0013]所述在所述緩存中的所述已抓取的數(shù)據(jù)及所述索引消失后,將所述硬盤中備份的所述已抓取的數(shù)據(jù)及所述索引復制到所述緩存中,包括:在所述緩存中的所述已抓取的數(shù)據(jù)及所述索引消失后,對所述硬盤中保存的所述文件進行反序列化處理,得到所述已抓取的數(shù)據(jù)及所述索引,將得到的所述已抓取的數(shù)據(jù)及所述索引保存到所述緩存中。
[0014]可選的,在所述獲得已抓取的數(shù)據(jù),對所述已抓取的數(shù)據(jù)建立索引之后,所述方法還包括:
[0015]根據(jù)預設(shè)的參數(shù)項及參數(shù)項的參數(shù)特征,在獲得的已抓取的數(shù)據(jù)中查找所述參數(shù)特征,根據(jù)查找結(jié)果確定所述已抓取的數(shù)據(jù)對應(yīng)的參數(shù)項的參數(shù)值;
[0016]所述將所述已抓取的數(shù)據(jù)及所述索引保存在緩存中,包括:
[0017]將所述已抓取的數(shù)據(jù)、所述索引及確定的參數(shù)項的參數(shù)值對應(yīng)保存在緩存中;
[0018]所述將所述緩存中的所述已抓取的數(shù)據(jù)及所述索引保存到硬盤中進行備份,包括:
[0019]將所述緩存中的所述已抓取的數(shù)據(jù)、所述索引及確定的參數(shù)項的參數(shù)值保存到硬盤中進行備份。
[0020]可選的,在將所述已抓取的數(shù)據(jù)、所述索引及確定的參數(shù)項的參數(shù)值對應(yīng)保存在緩存中之后,所述方法還包括:
[0021 ]獲得檢索詞及檢索方信息;
[0022]將與所述檢索詞匹配的索引對應(yīng)的已抓取的數(shù)據(jù)確定為初始檢索結(jié)果;
[0023]根據(jù)所述檢索方信息確定過濾條件,將所述初始檢索結(jié)果中對應(yīng)的參數(shù)項的參數(shù)值滿足所述過濾條件的已抓取的數(shù)據(jù)去除,將所述初始檢索結(jié)果中剩余的已抓取的數(shù)據(jù)確定為最終檢索結(jié)果;
[0024]將所述最終檢索結(jié)果返回至檢索方。
[0025]可選的,在將所述已抓取的數(shù)據(jù)、所述索引及確定的參數(shù)項的參數(shù)值對應(yīng)保存在緩存中之后,所述方法還包括:
[0026]獲得檢索詞及過濾條件;
[0027]將與所述檢索詞匹配的索引對應(yīng)的已抓取的數(shù)據(jù)確定為初始檢索結(jié)果;
[0028]將所述初始檢索結(jié)果中對應(yīng)的參數(shù)項的參數(shù)值滿足所述過濾條件的已抓取的數(shù)據(jù)去除,將所述初始檢索結(jié)果中剩余的已抓取的數(shù)據(jù)確定為最終檢索結(jié)果;
[0029]將所述最終檢索結(jié)果返回至檢索方。
[0030]可選的,在將所述已抓取的數(shù)據(jù)、所述索引及確定的參數(shù)項的參數(shù)值對應(yīng)保存在緩存中之后,所述方法還包括:
[0031]獲得數(shù)據(jù)清理條件,根據(jù)所述數(shù)據(jù)清理條件確定所需清理的已抓取的數(shù)據(jù)對應(yīng)的參數(shù)項的參數(shù)值;
[0032]將對應(yīng)所確定的參數(shù)項的參數(shù)值的已抓取的數(shù)據(jù)及索引清除。
[0033]可選的,所述服務(wù)器的緩存中存儲有第一索引庫和第二索引庫,所述將所述已抓取的數(shù)據(jù)及所述索引保存在緩存中,包括:
[0034]對所述第一索引庫進行更新,將所述已抓取的數(shù)據(jù)及所述索引更新到所述第一索引庫中,在所述第一索弓I庫進行更新時,使用所述第二索弓I庫進行檢索;
[0035]在所述第一索引庫更新完畢后,對所述第二索引庫進行更新,將所述已抓取的數(shù)據(jù)及所述索引更新到所述第二索引庫中。
[0036]可選的,所述服務(wù)器的緩存中存儲有至少一個索引庫,所述將所述已抓取的數(shù)據(jù)及所述索引保存在緩存中,包括:
[0037]生成包含所述已抓取的數(shù)據(jù)及所建立的索引的新索引庫并將所述新索引庫存儲在所述緩存中;
[0038]所述方法還包括:
[0039]獲得檢索詞,在所述緩存中存儲的各索引庫中查找與所述檢索詞匹配的索引;
[0040]將查找到索引對應(yīng)的已抓取的數(shù)據(jù)作為檢索結(jié)果輸出。
[0041]可選的,所述服務(wù)器的緩存中存儲有總索引庫和分索引庫,所述將所述已抓取的數(shù)據(jù)及所述索引保存在緩存中,包括:將所述已抓取的數(shù)據(jù)及建立的索引保存在所述分索引庫中;
[0042]所述方法還包括:
[0043]獲得檢索詞,在所述分索引庫和所述總索引庫中查找與所述檢索詞匹配的索引,如果查找到,則將查找到索引對應(yīng)的已抓取的數(shù)據(jù)作為檢索結(jié)果輸出;
[0044]判斷所述分索引庫是否滿足入庫條件,如果是,則將所述分索引庫中的數(shù)據(jù)轉(zhuǎn)移至所述總索引庫中。
[0045]第二方面,本發(fā)明實施例提供了一種數(shù)據(jù)存儲裝置,應(yīng)用于服務(wù)器中,所述裝置包括:索引建立模塊、數(shù)據(jù)保存模塊、備份判斷模塊和備份模塊,
[0046]所述索引建立模塊,用于獲得已抓取的數(shù)據(jù),對所述已抓取的數(shù)據(jù)建立索引;
[0047]所述數(shù)據(jù)保存模塊,用于將所述已抓取的數(shù)據(jù)及所述索引保存在緩存中;
[0048]所述備份判斷模塊,用于判斷是否滿足備份條件,如果滿足,則觸發(fā)所述備份模塊;
[0049]所述備份模塊,用于將所述緩存中的所述已抓取的數(shù)據(jù)及所述索引保存到硬盤中進行備份。
[0050]可選的,所述裝置還包括:數(shù)據(jù)復制模塊,用于在所述緩存中的所述已抓取的數(shù)據(jù)及所述索引消失后,將所述硬盤中備份的所述已抓取的數(shù)據(jù)及所述索引復制到所述緩存中。
[0051]可選的,所述備份模塊,具體用于:對所述緩存中的已抓取的數(shù)據(jù)及所述索引進行序列化處理,將序列化處理后生成的文件保存到硬盤中進行備份;
[0052]所述數(shù)據(jù)復制模塊,具體用于:在所述緩存中的所述已抓取的數(shù)據(jù)及所述索引消失后,對所述硬盤中保存的所述文件進行反序列化處理,得到所述已抓取的數(shù)據(jù)及所述索弓丨,將得到的所述已抓取的數(shù)據(jù)及所述索引保存到所述緩存中。
[0053]可選的,所述裝置還包括:第一參數(shù)值確定模塊,用于在所述索引建立模塊獲得已抓取的數(shù)據(jù),對所述已抓取的數(shù)據(jù)建立索引之后,根據(jù)預設(shè)的參數(shù)項及參數(shù)項的參數(shù)特征,在獲得的已抓取的數(shù)據(jù)中查找所述參數(shù)特征,根據(jù)查找結(jié)果確定所述已抓取的數(shù)據(jù)對應(yīng)的參數(shù)項的參數(shù)值;
[0054]所述數(shù)據(jù)保存模塊,具體用于:將所述已抓取的數(shù)據(jù)、所述索引及確定的參數(shù)項的參數(shù)值對應(yīng)保存在緩存中;
[0055]所述備份模塊,具體用于:將所述緩存中的所述已抓取的數(shù)據(jù)、所述索引及確定的參數(shù)項的參數(shù)值保存到硬盤中進行備份。
[0056]可選的,所述裝置還包括:
[0057]檢索信息獲得模塊,用于在所述數(shù)據(jù)保存模塊將所述已抓取的數(shù)據(jù)、所述索引及確定的參數(shù)項的參數(shù)值對應(yīng)保存在緩存中之后,獲得檢索詞及檢索方?目息;
[0058]初始結(jié)果確定模塊,用于將與所述檢索詞匹配的索引對應(yīng)的已抓取的數(shù)據(jù)確定為初始檢索結(jié)果;
[0059]第一最終結(jié)果確定模塊,用于根據(jù)所述檢索方信息確定過濾條件,將所述初始檢索結(jié)果中對應(yīng)的參數(shù)項的參數(shù)值滿足所述過濾條件的已抓取的數(shù)據(jù)去除,將所述初始檢索結(jié)果中剩余的已抓取的數(shù)據(jù)確定為最終檢索結(jié)果;
[0060]檢索結(jié)果返回模塊,用于將所述最終檢索結(jié)果返回至檢索方。
[0061 ] 可選的,所述裝置還包括:
[0062]過濾條件獲得模塊,用于在所述數(shù)據(jù)保存模塊將所述已抓取的數(shù)據(jù)、所述索引及確定的參數(shù)項的參數(shù)值對應(yīng)保存在緩存中之后,獲得檢索詞及過濾條件;
[0063]初始結(jié)果確定模塊,用于將與所述檢索詞匹配的索引對應(yīng)的已抓取的數(shù)據(jù)確定為初始檢索結(jié)果;
[0064]第二最終結(jié)果確定模塊,用于將所述初始檢索結(jié)果中對應(yīng)的參數(shù)項的參數(shù)值滿足所述過濾條件的已抓取的數(shù)據(jù)去除,將所述初始檢索結(jié)果中剩余的已抓取的數(shù)據(jù)確定為最終檢索結(jié)果;
[0065]檢索結(jié)果返回模塊,用于將所述最終檢索結(jié)果返回至檢索方。
[0066]可選的,所述裝置還包括: