本發(fā)明涉及搜索引擎技術領域,特別是涉及一種文件處理方法和裝置。
背景技術:
搜索引擎在查找相應的文件時,需要根據用戶輸入的關鍵字從索引目錄中進行匹配,從而得到最終的檢索結果。本申請的發(fā)明人在實施本實施例的過程中發(fā)現(xiàn),由于索引序列目錄的文件一般較大,層級也較多,且因為內存分配的固有原因,導致內存的碎片化問題較為突出,從而導致搜索響應速度慢,搜索引擎在搜索文件時的搜索效率較低。
技術實現(xiàn)要素:
有鑒于此,本發(fā)明提供了一種文件處理方法和裝置,以解決搜索引擎搜索文件的效率較低的問題。
為了解決上述問題,本發(fā)明公開了一種文件處理方法,包括步驟:
對滿足預設條件的第一文件進行分片處理,得到多個第二文件;
將所述第二文件進行反序列化處理,得到第三文件;
將所述第三文件進行扁平化處理,得到第四文件;
將所述第四文件進行合并,得到扁平化的目標文件。
可選的,所述對滿足預設條件的第一文件進行分片處理,包括:
遍歷所述第一文件;
將所述第一文件中數(shù)據量超出預設閾值的數(shù)據對象進行分片處理,得到所述第二文件。
可選的,所述將所述第二文件進行反序列化處理,包括:
打開所述第二文件中的字節(jié)流進行對象重構,得到所述第三文件。
可選的,所述將所述第三文件進行扁平化處理,包括:
讀取所述第三文件的索引層級中的所有數(shù)據;
將所述所有數(shù)據按預設規(guī)律進行排列,得到所述第四文件。
可選的,還包括步驟:
響應于用戶的搜索請求,加載所述搜索請求對應的扁平化的目標文件;
基于所述扁平化的目標文件進行匹配所述搜索請求的目標數(shù)據。
相應的,為了保證上述方法的實施,本發(fā)明還提供了一種文件處理裝置,包括:
分片處理模塊,用于對滿足預設條件的第一文件進行分片處理,得到多個第二文件;
反序列化模塊,用于將所述第二文件進行反序列化處理,得到第三文件;
扁平處理模塊,用于將所述第三文件進行扁平化處理,得到第四文件;
文件合并模塊,用于將所述第四文件進行合并,得到扁平化的目標文件。
可選的,所述分片處理模塊包括:
文件查閱單元,用于遍歷所述第一文件;
數(shù)據分割單元,用于將所述第一文件中數(shù)據量超出預設閾值的數(shù)據對象進行分片處理,得到所述第二文件。
可選的,所述反序列化模塊包括:
文件重構單元,用于打開所述第二文件中的字節(jié)流進行對象重構,得到所述第三文件。
可選的,所述扁平處理模塊包括:
數(shù)據讀取單元,用于讀取所述第三文件的索引層級中的所有數(shù)據;
數(shù)據排列單元,用于將所述所有數(shù)據按預設規(guī)律進行排列,得到所述第四文件。
可選的,還包括:
目標文件加載模塊,用于響應于用戶的搜索請求,加載所述搜索請求對應的扁平化的目標文件;
目標數(shù)據匹配模塊,用于基于所述扁平化的目標文件進行匹配所述搜索請求的目標數(shù)據。
從上述技術方案可以看出,本發(fā)明實施例提供了一種文件處理方法和裝置,該方法和裝置具體為對滿足預設條件的第一文件進行分片處理,得到多個第二文件;將所述第二文件進行反序列化處理,得到第三文件;將所述第三文件進行扁平化處理,得到第四文件;將所述第四文件進行合并,得到扁平化的目標文件。經過上述處理后得到的目標文件是一種扁平化結構的數(shù)據,方便搜索引擎直接以數(shù)據指針進行查找,而不用分層逐步檢索,從而提高了搜索效率。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發(fā)明提供的一種文件處理方法實施例的步驟流程圖;
圖2為本發(fā)明提供的另一種文件處理方法實施例的步驟流程圖;
圖3為本發(fā)明提供的一種文件處理裝置實施例的結構框圖;
圖4為本發(fā)明提供的另一種文件處理裝置實施例的結構框圖。
具體實施方式
下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
實施例一
圖1為本發(fā)明提供的一種文件處理方法實施例的步驟流程圖。
參照圖1所示,本實施例提供的文件處理方法用于對文件對象進行優(yōu)化處理,從而有利于搜索引擎進行搜索查找目標數(shù)據,具體方法包括如下步驟:
S101:對滿足預設條件的第一文件進行分片處理。
預設條件為文件超出預設的數(shù)據量,即第一文件較大的情況下,將該較大的第一文件進行分片處理,從而得到多個第二文件。在具體分片時,不是將所有需要加載的數(shù)據對象進行分片處理,而是將數(shù)據量較大的數(shù)據對象進行分片。
S102:將第二文件進行反序列化處理。
即得到多個第二文件后,將每個第二文件進行反序列化處理,從而得到序列化的第三文件,其實反序列化實質上時對數(shù)據對象進行序列化處理的一種情況。
S103:將第三文件進行扁平化處理。
在將第二文件經過反序列化工具處理得到該第三文件后,對的第三文件進一步處理,具體為對分層結構的第三文件進行扁平化處理,減少分層,從而得到扁平化處理后的第四文件。
S104:將第四文件進行合并處理,得到扁平化的目標文件。
在將每個第四文件進行扁平化處理后,將經過扁平化處理的第四文件進行拼接合成,從而得到目標文件。由于第四文件為已經經過了扁平化處理,從而該通過第四文件拼接來的目標文件也是扁平化文件,從而方便搜索引擎查找目標數(shù)據。
從上述技術方案可以看出,本實施例提供了一種文件處理方法,該方法具體為對滿足預設條件的第一文件進行分片處理,得到多個第二文件;將所述第二文件進行反序列化處理,得到第三文件;將所述第三文件進行扁平化處理,得到第四文件;將所述第四文件進行合并,得到扁平化的目標文件。經過上述處理后得到的目標文件是一種扁平化結構的數(shù)據,方便搜索引擎直接以數(shù)據指針進行查找,而不用分層逐步檢索,從而提高了搜索效率。
實施例二
圖2為本發(fā)明提供的另一種文件處理方法實施例的步驟流程圖。
參照圖2所示,本實施例提供的文件處理方法用于對文件對象進行優(yōu)化處理,從而有利于搜索引擎進行搜索查找目標數(shù)據,具體方法包括如下步驟:
S201:對滿足預設條件的第一文件進行分片處理。
預設條件為文件超出預設的數(shù)據量,即第一文件較大的情況下,將該較大的第一文件進行分片處理,從而得到多個第二文件。在具體分片時,不是將所有需要加載的數(shù)據對象進行分片處理,而是將數(shù)據量較大的數(shù)據對象進行分片,具體過程為:
首先遍歷所有需要加載的第一文件,具體為檢索其中的每個數(shù)據對象的數(shù)據量,將所有超出預設閾值的數(shù)據對象作為待處理數(shù)據對象;
然后將篩選出的待處理數(shù)據對象進行分片處理,從而得到相應數(shù)據對象的多個第二文件。
數(shù)據的分片處理是指將整體數(shù)據分攤在多個存儲設備上,從而形成多個數(shù)據分區(qū),這樣每個存儲設備的數(shù)據量相對就會小很多,以此滿足系統(tǒng)的性能需求。值得注意的是,分片處理的策略有很多,例如常見的有以下幾種:
根據ID特征:例如對記錄的ID取模,得到的結果是幾,那么這條記錄就放在編號為幾的數(shù)據分區(qū)上;
根據時間范圍:例如前100萬個數(shù)據在第1個分區(qū)中,第二個100萬數(shù)據放在第2個分區(qū)中;
基于檢索表:根據ID先去一個表內找到它所在的分區(qū),然后再去目標分區(qū)進行查找。
S202:將第二文件進行反序列化處理。
即得到多個第二文件后,將每個第二文件進行反序列化處理,從而得到序列化的第三文件,其實反序列化實質上時對數(shù)據對象進行序列化處理的一種情況。
具體來說,在對第二文件的反序列化處理時,是利用基于跨平臺序列化工具FlatBuffers將第二文件中的字節(jié)流打開,然后將打開的字節(jié)流進行對象重構,從而得到該第三文件。該工具可以通過thrift開發(fā)。
thrift是一個軟件框架,用來進行可擴展且跨語言的服務的開發(fā)。它結合了功能強大的軟件堆棧和代碼生成引擎,以構建在C++,Java,Go,Python,PHP,Ruby,Erlang,Perl,Haskell,C#,Cocoa,JavaScript,Node.js,Smalltalk,and OCaml這些編程語言間無縫結合的、高效的服務。
S203:將第三文件進行扁平化處理。
在將第二文件經過反序列化工具處理得到該第三文件后,對的第三文件進一步處理,具體為對分層結構的第三文件進行扁平化處理,減少分層,從而得到扁平化處理后的第四文件。
由于第三文件是包括多層索引結構的文件,因此如果直接檢索的話需要通過重重查找才能找到目標數(shù)據,因此如果想要提供檢索效率,則需要進行扁平化處理,具體的處理步驟為:
首先讀取該第三文件中索引層級中的所有數(shù)據;然后將所有數(shù)據按一定的規(guī)律進行排列,使原本分層的數(shù)據平等放置在預設的內存空間內,以方便搜索引擎利用統(tǒng)一的數(shù)據指針查找目標數(shù)據。
S204:將第四文件進行合并處理,得到扁平化的目標文件。
在將每個第四文件進行扁平化處理后,將經過扁平化處理的第四文件進行拼接合成,從而得到目標文件。由于第四文件為已經經過了扁平化處理,從而該通過第四文件拼接來的目標文件也是扁平化文件,從而方便搜索引擎查找目標數(shù)據。
S205:根據用戶的搜索請求加載對應的目標文件。
在用戶通過搜索引擎提出相應的搜索請求后,響應該請求,并加載對應于該請求的目標文件,該目標文件為上述處理后的扁平化結構的目標文件。
S206:基于該目標文件查找與該搜索請求對應的目標數(shù)據。
在加載上述目標文件后,基于該目標文件對該搜索請求進行匹配,查找與該請求所對應的目標文件中的目標數(shù)據,由于目標文件為扁平化結構,因此搜索引擎能夠快速根據該搜索請求定位該目標數(shù)據。
從上述技術方案可以看出,本實施例提供了另一種文件處理方法,該方法具體為對滿足預設條件的第一文件進行分片處理,得到多個第二文件;將所述第二文件進行反序列化處理,得到第三文件;將所述第三文件進行扁平化處理,得到第四文件;將所述第四文件進行合并,得到扁平化的目標文件。經過上述處理后得到的目標文件是一種扁平化結構的數(shù)據,方便搜索引擎直接以數(shù)據指針進行查找,而不用分層逐步檢索,從而提高了搜索效率。同時,當用戶提出搜索請求時,加載該目標文件,并基于該目標文件匹配該搜索請求對應的目標數(shù)據,由于目標文件的扁平化結構,從而使用戶能夠快速地得到該目標數(shù)據,提供了用戶體驗。
需要說明的是,對于方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發(fā)明實施例并不受所描述的動作順序的限制,因為依據本發(fā)明實施例,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作并不一定是本發(fā)明實施例所必須的。
實施例三
圖3為本發(fā)明提供的一種文件處理裝置實施例的結構框圖。
參照圖3所示,本實施例提供的文件處理裝置用于對文件對象進行優(yōu)化處理,從而有利于搜索引擎進行搜索查找目標數(shù)據,具體包括分片處理模塊10、反序列化模塊20、扁平處理模塊30和文件合并模塊40。
分片處理模塊10用于對滿足預設條件的第一文件進行分片處理。
預設條件為文件超出預設的數(shù)據量,即第一文件較大的情況下,將該較大的第一文件進行分片處理,從而得到多個第二文件。在具體分片時,不是將所有需要加載的數(shù)據對象進行分片處理,而是將數(shù)據量較大的數(shù)據對象進行分片,該模塊具體包括文件查閱單元11和數(shù)據分割單元12。
文件查閱單元11用于遍歷所有需要加載的第一文件,具體為檢索其中的每個數(shù)據對象的數(shù)據量,將所有超出預設閾值的數(shù)據對象作為待處理數(shù)據對象;數(shù)據分割單元12用于將文件查閱單元11篩選出的待處理數(shù)據對象進行分片處理,從而得到相應數(shù)據對象的多個第二文件。
數(shù)據的分片處理是指將整體數(shù)據分攤在多個存儲設備上,從而形成多個數(shù)據分區(qū),這樣每個存儲設備的數(shù)據量相對就會小很多,以此滿足系統(tǒng)的性能需求。值得注意的是,分片處理的策略有很多,例如常見的有以下幾種:
根據ID特征:例如對記錄的ID取模,得到的結果是幾,那么這條記錄就放在編號為幾的數(shù)據分區(qū)上;
根據時間范圍:例如前100萬個用戶數(shù)據在第1個分區(qū)中,第二個100萬用戶數(shù)據放在第2個分區(qū)中;
基于檢索表:根據ID先去一個表內找到它所在的分區(qū),然后再去目標分區(qū)進行查找。
反序列化模塊20用于將第二文件進行反序列化處理。
即在分片處理模塊10得到多個第二文件后,利用反序列化模塊20將每個第二文件進行反序列化處理,從而得到序列化的第三文件,其實反序列化實質上時對數(shù)據對象進行序列化處理的一種情況。該模塊包括文件重構單元21。
具體來說,在對第二文件的反序列化處理時,是通過文件重構單元21利用基于跨平臺序列化工具FlatBuffers將第二文件中的字節(jié)流打開,然后將打開的字節(jié)流進行對象重構,從而得到該第三文件。該工具可以通過thrift開發(fā)。
thrift是一個軟件框架,用來進行可擴展且跨語言的服務的開發(fā)。它結合了功能強大的軟件堆棧和代碼生成引擎,以構建在C++,Java,Go,Python,PHP,Ruby,Erlang,Perl,Haskell,C#,Cocoa,JavaScript,Node.js,Smalltalk,and OCaml這些編程語言間無縫結合的、高效的服務。
扁平處理模塊30用于將第三文件進行扁平化處理。
在將第二文件經過反序列化工具處理得到該第三文件后,對的第三文件進一步處理,具體為對分層結構的第三文件進行扁平化處理,減少分層,從而得到扁平化處理后的第四文件。
由于第三文件是包括多層索引結構的文件,因此如果直接檢索的話需要通過重重查找才能找到目標數(shù)據,因此如果想要提供檢索效率,則需要進行扁平化處理,該模塊具體包括數(shù)據讀取單元31和數(shù)據排列單元32。
數(shù)據讀取單元31用于讀取該第三文件中索引層級中的所有數(shù)據;數(shù)據排列單元用于將所有數(shù)據按一定的規(guī)律進行排列,使原本分層的數(shù)據平等放置在預設的內存空間內,以方便里搜索引擎利用統(tǒng)一的數(shù)據指針查找目標數(shù)據。
文件合并模塊40用于將第四文件進行合并處理,得到扁平化的目標文件。
在將每個第四文件進行扁平化處理后,將經過扁平化處理的第四文件進行拼接合成,從而得到目標文件。由于第四文件為已經經過了扁平化處理,從而該通過第四文件拼接來的目標文件也是扁平化文件,從而方便搜索引擎查找目標數(shù)據。
從上述技術方案可以看出,本實施例提供了一種文件處理裝置,該裝置具體為對滿足預設條件的第一文件進行分片處理,得到多個第二文件;將所述第二文件進行反序列化處理,得到第三文件;將所述第三文件進行扁平化處理,得到第四文件;將所述第四文件進行合并,得到扁平化的目標文件。經過上述處理后得到的目標文件是一種扁平化結構的數(shù)據,方便搜索引擎直接以數(shù)據指針進行查找,而不用分層逐步檢索,從而提高了搜索效率。
實施例四
圖4為本發(fā)明提供的另一種文件處理裝置實施例的結構框圖。
參照圖4所示,本實施例提供的文件處理裝置是在上一實施例的基礎上增設了目標文件加載模塊50和目標數(shù)據匹配模塊60。
目標文件加載模塊50用于根據用戶的搜索請求加載對應的目標文件。
即在用戶通過搜索引擎提出相應的搜索請求后,響應該請求,并加載對應于該請求的目標文件,該目標文件為上述處理后的扁平化結構的目標文件。
在加載上述目標文件后,目標數(shù)據匹配模塊60用于基于該目標文件對該搜索請求進行匹配,查找與該請求所對應的目標文件中的目標數(shù)據,由于目標文件為扁平化結構,因此搜索引擎能夠快速根據該搜索請求定位該目標數(shù)據。
從上述技術方案可以看出,本實施例提供了另一種文件處理裝置,該裝置具體為對滿足預設條件的第一文件進行分片處理,得到多個第二文件;將所述第二文件進行反序列化處理,得到第三文件;將所述第三文件進行扁平化處理,得到第四文件;將所述第四文件進行合并,得到扁平化的目標文件。經過上述處理后得到的目標文件是一種扁平化結構的數(shù)據,方便搜索引擎直接以數(shù)據指針進行查找,而不用分層逐步檢索,從而提高了搜索效率。同時,當用戶提出搜索請求時,加載該目標文件,并基于該目標文件匹配該搜索請求對應的目標數(shù)據,由于目標文件的扁平化結構,從而使用戶能夠快速地得到該目標數(shù)據,提供了用戶體驗。
對于裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。
本領域內的技術人員應明白,本發(fā)明實施例的實施例可提供為方法、裝置、或計算機程序產品。因此,本發(fā)明實施例可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發(fā)明實施例可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。
本發(fā)明實施例是參照根據本發(fā)明實施例的方法、終端設備(系統(tǒng))、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據處理終端設備的處理器以產生一個機器,使得通過計算機或其他可編程數(shù)據處理終端設備的處理器執(zhí)行的指令產生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據處理終端設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據處理終端設備上,使得在計算機或其他可編程終端設備上執(zhí)行一系列操作步驟以產生計算機實現(xiàn)的處理,從而在計算機或其他可編程終端設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本發(fā)明實施例的優(yōu)選實施例,但本領域內的技術人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例做出另外的變更和修改。所以,所附權利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明實施例范圍的所有變更和修改。
最后,還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者終端設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者終端設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者終端設備中還存在另外的相同要素。
以上對本發(fā)明所提供的技術方案進行了詳細介紹,本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領域的一般技術人員,依據本發(fā)明的思想,在具體實施方式及應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發(fā)明的限制。