本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)更新系統(tǒng)及方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)的發(fā)展,海量數(shù)據(jù)的膨脹,垂直搜索的需求也日益增長。垂直搜索不同于網(wǎng)頁搜索,是對某類信息的定向搜索。搜索平臺可以作為搜索托管服務(wù)平臺為一些用戶(如企業(yè)用戶或個(gè)人用戶)提供垂直搜索服務(wù),由用戶在該搜索平臺上上傳指定的數(shù)據(jù)集合,以推出自身的個(gè)性化搜索服務(wù)。例如,手機(jī)管家等應(yīng)用的提供商可以向搜索平臺上傳應(yīng)用數(shù)據(jù)集合,從而使得手機(jī)管家用戶可以在應(yīng)用中進(jìn)行搜索。
現(xiàn)有技術(shù)中,用戶可以提供定期上傳全量數(shù)據(jù)集合至搜索平臺,也即是,用戶可以把新增數(shù)據(jù)和已有數(shù)據(jù)保存成一個(gè)新的全量數(shù)據(jù)集合,并定期將該全量數(shù)據(jù)集合上傳至搜索平臺,以替換舊的全量數(shù)據(jù)集合,從而實(shí)現(xiàn)對全量數(shù)據(jù)的更新。
在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:
由于用戶只能定期上傳更新的全量數(shù)據(jù)集合,且一旦進(jìn)行上述替換過程,則可能需要暫停搜索服務(wù),影響搜索服務(wù)的正常運(yùn)行,更新的實(shí)時(shí)性差。
技術(shù)實(shí)現(xiàn)要素:
為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)更新系統(tǒng)及方法。所述技術(shù)方案如下:
一方面,提供了一種數(shù)據(jù)更新系統(tǒng),包括:離線模塊和在線模塊;
所述離線模塊,用于當(dāng)檢測到用戶的第一數(shù)據(jù)文件,所述離線模塊向所述在線模塊申請新的存儲(chǔ)空間,所述第一數(shù)據(jù)文件的數(shù)據(jù)類型為全量數(shù)據(jù);
所述離線模塊,還用于對接收到的第一數(shù)據(jù)文件進(jìn)行處理,得到新版本的搜索服務(wù)數(shù)據(jù),并將新版本的搜索服務(wù)數(shù)據(jù)推送至所述在線模塊進(jìn)行加載;
所述在線模塊,用于分配新的存儲(chǔ)空間,并在接收到所述新版本的搜索服務(wù)數(shù)據(jù)時(shí),在所述新的存儲(chǔ)空間中加載所述新版本的搜索服務(wù)數(shù)據(jù);
所述在線模塊用于在所述新版本的搜索服務(wù)數(shù)據(jù)未加載完成之前,保持由舊版本的搜索服務(wù)數(shù)據(jù)的在線狀態(tài),以提供搜索服務(wù);
所述在線模塊還用于在所述新版本的搜索服務(wù)數(shù)據(jù)加載完成時(shí),將所述舊版本的搜索服務(wù)數(shù)據(jù)下線,并啟動(dòng)所述新版本的搜索服務(wù)數(shù)據(jù),以提供所述搜索服務(wù)。
另一方面,提供了一種數(shù)據(jù)更新方法,包括:
當(dāng)檢測到用戶的第一數(shù)據(jù)文件,申請新的存儲(chǔ)空間,所述第一數(shù)據(jù)文件的數(shù)據(jù)類型為全量數(shù)據(jù);
對接收到的第一數(shù)據(jù)文件進(jìn)行處理,得到新版本的搜索服務(wù)數(shù)據(jù),在所述新的存儲(chǔ)空間中加載所述新版本的搜索服務(wù)數(shù)據(jù);
在所述新版本的搜索服務(wù)數(shù)據(jù)未加載完成之前,保持由舊版本的搜索服務(wù)數(shù)據(jù)的在線狀態(tài),以提供搜索服務(wù);
在所述新版本的搜索服務(wù)數(shù)據(jù)加載完成時(shí),將所述舊版本的搜索服務(wù)數(shù)據(jù)下線,并啟動(dòng)所述新版本的搜索服務(wù)數(shù)據(jù),以提供所述搜索服務(wù)。
本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是:
通過在數(shù)據(jù)更新過程中,一邊進(jìn)行新的全量數(shù)據(jù)的處理,一邊采用原有全量數(shù)據(jù)來提供搜索服務(wù),可以在不影響搜索服務(wù)正常運(yùn)行的情況下,實(shí)現(xiàn)數(shù)據(jù)的更新,該過程不僅能夠提高更新的實(shí)時(shí)性,且提供了更加靈活的更新方式。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新系統(tǒng)的結(jié)構(gòu)示意圖;
圖2是本發(fā)明實(shí)施例提供的數(shù)據(jù)更新系統(tǒng)的可能實(shí)現(xiàn)方式的架構(gòu)示意圖;
圖3是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新方法的流程圖;
圖4是根據(jù)一示例性實(shí)施例示出的一種服務(wù)器400的框圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
對于檢索服務(wù)來說,其不同階段需要采用不同的更新方式,例如,剛剛開始提供檢索服務(wù)時(shí),必須提供一份全量數(shù)據(jù)集合,搜索平臺才能根據(jù)這些數(shù)據(jù)中所包括的文檔建立索引目錄,以提供檢索服務(wù)。而檢索服務(wù)過程中,為了維護(hù)該搜索服務(wù),用戶可以上傳批量增量數(shù)據(jù)。例如,應(yīng)用管理業(yè)務(wù)定期增加了一批應(yīng)用,因此用戶需要提供這批應(yīng)用數(shù)據(jù),以生成新的索引目錄,使得應(yīng)用用戶可以檢索到這批應(yīng)用。而檢索服務(wù)過程中,用戶還可能想要實(shí)時(shí)更新某一條數(shù)據(jù),此時(shí),用戶可以實(shí)時(shí)更新單個(gè)文檔。例如,視頻業(yè)務(wù)新出了一個(gè)電影,那么用戶就需要檢索服務(wù)能夠?qū)崟r(shí)插入這個(gè)數(shù)據(jù)的索引,使這條數(shù)據(jù)能夠立即被檢索到,為了在保證正常運(yùn)行的前提下,提供數(shù)據(jù)更新,提供了以下數(shù)據(jù)更新系統(tǒng)以及數(shù)據(jù)更新方法。
圖1是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新系統(tǒng)的結(jié)構(gòu)示意圖。參見圖1,該數(shù)據(jù)更新系統(tǒng)包括:離線模塊101和在線模塊102;
離線模塊101,用于當(dāng)檢測到用戶的第一數(shù)據(jù)文件,所述離線模塊101向所述在線模塊102申請新的存儲(chǔ)空間,所述第一數(shù)據(jù)文件的數(shù)據(jù)類型為全量數(shù)據(jù);
所述離線模塊101,還用于對接收到的第一數(shù)據(jù)文件進(jìn)行處理,得到新版本的搜索服務(wù)數(shù)據(jù),并將新版本的搜索服務(wù)數(shù)據(jù)推送至所述在線模塊102進(jìn)行加載;
所述在線模塊102,用于分配新的存儲(chǔ)空間,并在接收到所述新版本的搜索服務(wù)數(shù)據(jù)時(shí),在所述新的存儲(chǔ)空間中加載所述新版本的搜索服務(wù)數(shù)據(jù);
所述在線模塊102用于在所述新版本的搜索服務(wù)數(shù)據(jù)未加載完成之前,保持由舊版本的搜索服務(wù)數(shù)據(jù)的在線狀態(tài),以提供搜索服務(wù);
所述在線模塊102還用于在所述新版本的搜索服務(wù)數(shù)據(jù)加載完成時(shí),將所述舊版本的搜索服務(wù)數(shù)據(jù)下線,并啟動(dòng)所述新版本的搜索服務(wù)數(shù)據(jù),以提供所述搜索服務(wù)。
上述實(shí)施例提供的數(shù)據(jù)更新系統(tǒng),通過在數(shù)據(jù)更新過程中,一邊進(jìn)行新的全量數(shù)據(jù)的處理,一邊采用原有全量數(shù)據(jù)來提供搜索服務(wù),可以在不影響搜索服務(wù)正常運(yùn)行的情況下,實(shí)現(xiàn)數(shù)據(jù)的更新,該過程不僅能夠提高更新的實(shí)時(shí)性, 且提供了更加靈活的更新方式。
在本發(fā)明提供的另一實(shí)施例中,所述離線模塊101還用于當(dāng)檢測到所述用戶的第二數(shù)據(jù)文件時(shí),在對所述第一數(shù)據(jù)文件的加載完成后,處理所述第二數(shù)據(jù)文件,并將處理后的第二數(shù)據(jù)文件與所述新版本的搜索服務(wù)數(shù)據(jù)進(jìn)行整合,所述第二數(shù)據(jù)文件的數(shù)據(jù)類型為批量增量數(shù)據(jù)。
該實(shí)施例提供的數(shù)據(jù)更新系統(tǒng),不僅可以達(dá)到不影響搜索服務(wù)正常運(yùn)行的目的,還可以保證在全量更新的同時(shí),一旦發(fā)生增量批量更新,也可以在全量更新結(jié)束時(shí),繼續(xù)進(jìn)行增量更新,保證了更新數(shù)據(jù)的先后順序。
在本發(fā)明提供的另一實(shí)施例中,所述離線模塊101還用于為所述第一數(shù)據(jù)文件中的多個(gè)文檔添加第一時(shí)間戳,所述第一時(shí)間戳為0;所述離線模塊101還用于為所述第二數(shù)據(jù)文件中的多個(gè)文檔添加第二時(shí)間戳,所述第二時(shí)間戳為早于當(dāng)前時(shí)間的時(shí)間戳;
所述離線模塊101還用于確定所述第一數(shù)據(jù)文件和所述第二數(shù)據(jù)文件中的第一相同文檔,保留所述第一相同文檔中時(shí)間戳最大的文檔,刪除所述第一相同文檔中其他文檔。
通過上述實(shí)施例,由于全量數(shù)據(jù)中文檔的時(shí)間戳均為0,則如果增量數(shù)據(jù)中具有與全量數(shù)據(jù)相同的文檔,該文檔的時(shí)間戳肯定是大于0的,因此,即使全量更新和增量更新的數(shù)據(jù)中有重復(fù)文檔,也可以通過時(shí)間戳的特殊設(shè)置,刪除時(shí)間戳小的文檔,從而實(shí)現(xiàn)數(shù)據(jù)整合,避免數(shù)據(jù)冗余,也避免數(shù)據(jù)的錯(cuò)刪等情況,可以保證最終提供搜索服務(wù)的數(shù)據(jù)均為最新數(shù)據(jù)。
需要說明的是,上述第一數(shù)據(jù)文件和第二數(shù)據(jù)文件對應(yīng)的數(shù)據(jù)均可以是由用戶上傳至為該用戶創(chuàng)建的云存儲(chǔ)離線目錄中,由該云存儲(chǔ)離線目錄以文件的形式進(jìn)行存儲(chǔ)。
另外,離線模塊101還可以對接收到的數(shù)據(jù)進(jìn)行完整性校驗(yàn),如md5校驗(yàn)等,當(dāng)完整性校驗(yàn)成功時(shí),再進(jìn)行數(shù)據(jù)處理,以避免數(shù)據(jù)出錯(cuò)。
在本發(fā)明提供的另一實(shí)施例中,所述離線模塊101還用于當(dāng)接收到所述用戶發(fā)送的實(shí)時(shí)數(shù)據(jù)流時(shí),將所述實(shí)時(shí)數(shù)據(jù)流分別加載至所述新的存儲(chǔ)空間和原有存儲(chǔ)空間。
需要說明的是,上述實(shí)時(shí)數(shù)據(jù)流可以是由用戶上傳至http服務(wù)器中,并由該服務(wù)器分別推送至在線模塊和云存儲(chǔ)離線目錄中,以保證實(shí)時(shí)數(shù)據(jù)流一定會(huì) 存在于新的存儲(chǔ)空間,而由于該實(shí)時(shí)數(shù)據(jù)流也落地于云存儲(chǔ)離線目錄中,則還可以避免數(shù)據(jù)丟失等情況發(fā)生。
在本發(fā)明提供的另一實(shí)施例中,所述離線模塊101還用于為用戶發(fā)送的實(shí)時(shí)數(shù)據(jù)流中的文檔添加第三時(shí)間戳,所述第三時(shí)間戳用于指示當(dāng)前時(shí)間;
所述在線模塊102還用于根據(jù)所述新的存儲(chǔ)空間中多個(gè)文檔的時(shí)間戳和所述實(shí)時(shí)數(shù)據(jù)流中文檔的第三時(shí)間戳,確定所述新的存儲(chǔ)空間中和所述實(shí)時(shí)數(shù)據(jù)流中的第二相同文檔,保留所述第二相同文檔中時(shí)間戳最大的文檔,刪除所述第二相同文檔中其他文檔。
在該實(shí)施例中,如果需要同時(shí)加載全量數(shù)據(jù)、批量增量數(shù)據(jù)以及實(shí)時(shí)數(shù)據(jù)流中的實(shí)時(shí)文檔,則加載過程中,可以由在線模塊102進(jìn)行時(shí)間戳的判斷,以保留最新的文檔,在保證正常運(yùn)行的前提下,不僅提供了多種方式的靈活更新方法,且保證了數(shù)據(jù)的完整性。
在一種可能實(shí)現(xiàn)方式中,可以離線模塊101可以包括如圖2中的實(shí)時(shí)流服務(wù)器、云存儲(chǔ)離線目錄單元、文件流處理單元,而在線模塊102可以包括在線加載單元以及云存儲(chǔ)在線目錄單元。增量數(shù)據(jù)和全量數(shù)據(jù)可以由用戶上傳至云存儲(chǔ)離線目錄單元,由云存儲(chǔ)離線目錄單元寫入數(shù)據(jù)文件,并通過文件流處理單元對數(shù)據(jù)文件中所包含的文檔進(jìn)行數(shù)據(jù)整合和處理,并將處理結(jié)果發(fā)送至在線模塊的云存儲(chǔ)在線目錄單元,以提供搜索服務(wù),而實(shí)時(shí)流服務(wù)器則可以接收用戶通過實(shí)時(shí)數(shù)據(jù)流發(fā)送的增量文檔,并進(jìn)行數(shù)據(jù)處理,再將處理后的增量文檔分別推送至云存儲(chǔ)離線目錄單元以及在線加載單元,由在線加載單元進(jìn)行加載,從而實(shí)現(xiàn)實(shí)時(shí)更新。該實(shí)現(xiàn)方式僅是本發(fā)明的一種示例,并不對本發(fā)明在實(shí)際應(yīng)用時(shí)的具體硬件或功能劃分造成限制。
上述所有可選技術(shù)方案,可以采用任意結(jié)合形成本公開的可選實(shí)施例,在此不再一一贅述。
圖3是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)更新方法的流程圖。參見圖1和圖3,該圖3可以應(yīng)用于如圖1的系統(tǒng)架構(gòu),該方法具體包括:
301、當(dāng)檢測到用戶的第一數(shù)據(jù)文件,離線模塊101向在線模塊102申請新的存儲(chǔ)空間,所述第一數(shù)據(jù)文件的數(shù)據(jù)類型為全量數(shù)據(jù),該第一數(shù)據(jù)文件的多個(gè)文檔攜帶第一時(shí)間戳,該第一時(shí)間戳為0。
在離線模塊101接收到用戶上傳的全量數(shù)據(jù)時(shí),在將該全量數(shù)據(jù)存儲(chǔ)為第一數(shù)據(jù)文件的過程中,可以為所述第一數(shù)據(jù)文件中的多個(gè)文檔添加第一時(shí)間戳,所述第一時(shí)間戳為0。
對于數(shù)據(jù)文件,可以根據(jù)其命名不同,確定該數(shù)據(jù)文件的數(shù)據(jù)類型。對于全量數(shù)據(jù)和批量增量數(shù)據(jù),可以命名為不同的文件名。例如,參見下表1,表1為不同數(shù)據(jù)類型的文件的命名格式。
表1
其中,全量數(shù)據(jù)索引文件是指根據(jù)全量數(shù)據(jù)生成的索引文件,該全量數(shù)據(jù)以全量數(shù)據(jù)文件(也即是本發(fā)明實(shí)施例提供的第一數(shù)據(jù)文件)的形式存儲(chǔ)于云存儲(chǔ)目錄中,而批量增量數(shù)據(jù)文件(也即是本發(fā)明實(shí)施例他工的第二數(shù)據(jù)文件)、增量數(shù)據(jù)刪除文件以及屬性增量更新文件均是對部分?jǐn)?shù)據(jù)進(jìn)行操作的文件,如,批量增量數(shù)據(jù)文件可以包括將要添加至全量數(shù)據(jù)中的多個(gè)文檔,而增量數(shù)據(jù)刪除文件可以包括將要從全量數(shù)據(jù)中刪除的多個(gè)文檔。屬性增量更新文件所包括的可以是多個(gè)用于描述文檔屬性的文檔,該屬性是指某一文檔的網(wǎng)絡(luò)互動(dòng)參數(shù),如點(diǎn)贊數(shù)、評論數(shù)、下載數(shù)等等,該屬性可以用于對文檔的評分,從而使得在向應(yīng)用用戶推送搜索結(jié)果時(shí),可以根據(jù)對文檔的評分高低進(jìn)行有選擇性的推送,以提高搜索結(jié)果的公信力和針對性。
302、在線模塊102分配新的存儲(chǔ)空間。
該分配新的存儲(chǔ)空間可以是指在該用戶的制定容量內(nèi)為該用戶分配新的存 儲(chǔ)空間,如,該用戶所制定的容量為500m,則從其空閑容量中分配新的存儲(chǔ)空間,每次所分配的存儲(chǔ)空間可以為固定值,也可以根據(jù)該第一數(shù)據(jù)文件的實(shí)際大小進(jìn)行分配,本發(fā)明實(shí)施例對此不做限定。
303、在線模塊102在所述新版本的搜索服務(wù)數(shù)據(jù)未加載完成之前,保持由舊版本的搜索服務(wù)數(shù)據(jù)的在線狀態(tài),以提供搜索服務(wù)。
該舊版本的搜索服務(wù)數(shù)據(jù)是指未進(jìn)行更新前的搜索服務(wù)數(shù)據(jù)。其中,搜索服務(wù)數(shù)據(jù)包括應(yīng)用服務(wù)商提供的多個(gè)文檔,還包括搜索平臺在對該多個(gè)文檔進(jìn)行數(shù)據(jù)處理時(shí)所生成的索引目錄,該索引目錄用于維護(hù)索引關(guān)鍵字與文檔之間的對應(yīng)關(guān)系,使得應(yīng)用用戶在搜索平臺上輸入某一個(gè)索引關(guān)鍵字,可以通過該索引目錄,得到對應(yīng)的搜索結(jié)果。
該步驟303是指在真正將第一數(shù)據(jù)文件加載完成之前,還繼續(xù)采用舊版本的搜索服務(wù)數(shù)據(jù)提供搜索服務(wù),使得應(yīng)用用戶仍能夠使用該搜索服務(wù),且對于應(yīng)用用戶來說,該數(shù)據(jù)更新過程完全在后臺進(jìn)行,對于應(yīng)用用戶不可見,不會(huì)影響該搜索服務(wù)的正常運(yùn)行。
304、離線模塊101對接收到的第一數(shù)據(jù)文件進(jìn)行處理,得到新版本的搜索服務(wù)數(shù)據(jù),并將新版本的搜索服務(wù)數(shù)據(jù)推送至所述在線模塊102進(jìn)行加載。
該處理過程即是對數(shù)據(jù)進(jìn)行整理以及為第一數(shù)據(jù)文件生成相應(yīng)索引目錄的過程,本發(fā)明實(shí)施例對此不做限定。
305、在線模塊102在接收到所述新版本的搜索服務(wù)數(shù)據(jù)時(shí),在所述新的存儲(chǔ)空間中加載所述新版本的搜索服務(wù)數(shù)據(jù)。
該加載過程可以是指將新版的搜索服務(wù)數(shù)據(jù)的傳輸和存儲(chǔ)過程,本發(fā)明實(shí)施例對此不做具體限定。
306、當(dāng)離線模塊101檢測到所述用戶的第二數(shù)據(jù)文件時(shí),在對所述第一數(shù)據(jù)文件的加載完成后,處理所述第二數(shù)據(jù)文件,并將處理后的第二數(shù)據(jù)文件與所述新版本的搜索服務(wù)數(shù)據(jù)進(jìn)行整合,所述第二數(shù)據(jù)文件的數(shù)據(jù)類型為批量增量數(shù)據(jù),第二數(shù)據(jù)文件中的多個(gè)文檔攜帶第二時(shí)間戳,所述第二時(shí)間戳為早于當(dāng)前時(shí)間的時(shí)間戳。
在所述離線模塊101接收到用戶上傳的批量增量數(shù)據(jù)時(shí),在將該批量增量數(shù)據(jù)存儲(chǔ)為第二數(shù)據(jù)文件的過程中,可以為所述第二數(shù)據(jù)文件中的多個(gè)文檔添加第二時(shí)間戳,所述第二時(shí)間戳為早于當(dāng)前時(shí)間的時(shí)間戳。例如,該第二時(shí)間 戳可以為當(dāng)前時(shí)間減去1年。
在實(shí)際場景中,可以為用戶提供多種數(shù)據(jù)更新方式,如全量更新和增量更新,這兩種更新方式很可能并發(fā),因此,為了避免數(shù)據(jù)冗余或數(shù)據(jù)錯(cuò)誤,需要按照一定順序進(jìn)行加載,先對全量數(shù)據(jù)進(jìn)行處理和加載,在加載完成后,再對全量數(shù)據(jù)處理過程中所接收到且未處理的增量數(shù)據(jù)進(jìn)行處理,也即是本發(fā)明實(shí)施例306的步驟。
將處理后的第二數(shù)據(jù)文件與所述新版本的搜索服務(wù)數(shù)據(jù)進(jìn)行整合的過程,可以根據(jù)數(shù)據(jù)文件中文檔的時(shí)間戳進(jìn)行,具體可以包括以下步驟:確定所述第一數(shù)據(jù)文件和所述第二數(shù)據(jù)文件中的第一相同文檔,保留所述第一相同文檔中時(shí)間戳最大的文檔,刪除所述第一相同文檔中其他文檔。其中,第一相同文檔是指文檔名相同的文檔,雖然第一數(shù)據(jù)文件中的某一文檔和第二數(shù)據(jù)文件中的某一文檔可能文檔名相同,但是很有可能文檔內(nèi)容發(fā)生了變化,因此為了保證應(yīng)用數(shù)據(jù)均為最新數(shù)據(jù),可以采用時(shí)間戳來確定最新數(shù)據(jù),并僅保留該確定的最新數(shù)據(jù),即可以保證數(shù)據(jù)的完整性,還可以保證數(shù)據(jù)的時(shí)新性,進(jìn)一步還避免了數(shù)據(jù)冗余。
例如,第一數(shù)據(jù)文件中的多個(gè)文檔包括:
文檔a(0);文檔b(0);文檔c(0);文檔d(0);
第二數(shù)據(jù)文件中的多個(gè)文檔包括:
文檔b(t1);文檔e(t1);t1=當(dāng)前時(shí)間減去1年
其中,()中的數(shù)值為時(shí)間戳;
由于t1大于0,因此,對于第一相同文檔中的文檔b(0)和文檔b(t1),刪除文檔b(0),保留文檔b(t1)。
307、在線模塊102在所述新版本的搜索服務(wù)數(shù)據(jù)加載完成時(shí),將所述舊版本的搜索服務(wù)數(shù)據(jù)下線,并啟動(dòng)所述新版本的搜索服務(wù)數(shù)據(jù),以提供所述搜索服務(wù)。
如果僅檢測到第一數(shù)據(jù)文件,則在第一數(shù)據(jù)文件對應(yīng)的新版本加載完成后,即可以將舊版本下線,并啟動(dòng)新版本來提供搜索服務(wù),實(shí)現(xiàn)了在正常運(yùn)行的前提下的數(shù)據(jù)更新,而如果同時(shí)并發(fā)了兩種更新方式,即全量更新和增量更新,則可以在全量更新加載完成時(shí),再進(jìn)行增量更新的處理和加載,待增量更新也加載完成后,再啟動(dòng)由全量更新和增量更新對應(yīng)的新版本,以提供所述搜索服 務(wù)。
308、當(dāng)離線模塊101接收到所述用戶發(fā)送的實(shí)時(shí)數(shù)據(jù)流時(shí),將所述實(shí)時(shí)數(shù)據(jù)流分別加載至所述新的存儲(chǔ)空間和原有存儲(chǔ)空間。
這種分別加載的方式可以使得新的存儲(chǔ)空間中獲取到最新數(shù)據(jù),雖然實(shí)時(shí)數(shù)據(jù)流可能會(huì)在全量更新或增量更新的過程中灌入,但是,可以通過時(shí)間戳的方式保證數(shù)據(jù)的時(shí)新性,該實(shí)時(shí)數(shù)據(jù)流中的文檔可以添加第三時(shí)間戳,所述第三時(shí)間戳用于指示當(dāng)前時(shí)間,使得在后續(xù)數(shù)據(jù)整合過程中,可以保留時(shí)間戳最大的文檔,保證了時(shí)間上的先后順序。
309、根據(jù)所述新的存儲(chǔ)空間中多個(gè)文檔的時(shí)間戳和所述實(shí)時(shí)數(shù)據(jù)流中文檔的第三時(shí)間戳,確定所述新的存儲(chǔ)空間中和所述實(shí)時(shí)數(shù)據(jù)流中的第二相同文檔,保留所述第二相同文檔中時(shí)間戳最大的文檔,刪除所述第二相同文檔中其他文檔。
又例如,第一數(shù)據(jù)文件中的多個(gè)文檔包括:
文檔a(0);文檔b(0);文檔c(0);文檔d(0);
第二數(shù)據(jù)文件中的多個(gè)文檔包括:
文檔b(t1);文檔e(t1);t1=當(dāng)前時(shí)間減去1年
實(shí)時(shí)數(shù)據(jù)流中的多個(gè)文檔包括:
文檔b(t2);文檔f(t2),t2=當(dāng)前時(shí)間
其中,()中的數(shù)值為時(shí)間戳;
由于t2大于t1和0,因此,對于第二相同文檔中的文檔b(0)、文檔b(t1)和文檔b(t2),刪除文檔b(0)、文檔b(t1),保留文檔b(t2)。
通過在數(shù)據(jù)更新過程中,一邊進(jìn)行新的全量數(shù)據(jù)的處理,一邊采用原有全量數(shù)據(jù)來提供搜索服務(wù),可以在不影響搜索服務(wù)正常運(yùn)行的情況下,實(shí)現(xiàn)數(shù)據(jù)的更新,該過程不僅能夠提高更新的實(shí)時(shí)性,且提供了更加靈活的更新方式。該實(shí)施例提供的系統(tǒng)和方法,提供了一套通用的流程支撐用戶復(fù)雜的使用場景,提高了搜索平臺的業(yè)務(wù)接入能力,同時(shí)也縮減了運(yùn)維的人力成本。由于可以靈活的采用不同的方式進(jìn)行推送數(shù)據(jù),也大大提高了用戶的體驗(yàn)。
圖4是根據(jù)一示例性實(shí)施例示出的一種服務(wù)器400的框圖。參照圖4,服務(wù)器400包括處理組件422,其進(jìn)一步包括一個(gè)或多個(gè)處理器,以及由存儲(chǔ)器432 所代表的存儲(chǔ)器資源,用于存儲(chǔ)可由處理部件422的執(zhí)行的指令,例如應(yīng)用程序。存儲(chǔ)器432中存儲(chǔ)的應(yīng)用程序可以包括一個(gè)或一個(gè)以上的每一個(gè)對應(yīng)于一組指令的模塊。此外,處理組件422被配置為執(zhí)行指令,以執(zhí)行上述數(shù)據(jù)更新方法。
服務(wù)器400還可以包括一個(gè)電源組件426被配置為執(zhí)行服務(wù)器400的電源管理,一個(gè)有線或無線網(wǎng)絡(luò)接口450被配置為將服務(wù)器400連接到網(wǎng)絡(luò),和一個(gè)輸入輸出(i/o)接口458。服務(wù)器400可以操作基于存儲(chǔ)在存儲(chǔ)器432的操作系統(tǒng),例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或類似。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。