亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種內(nèi)存檢索系統(tǒng)和方法、以及實(shí)時(shí)檢索系統(tǒng)和方法

文檔序號:6485826閱讀:180來源:國知局
一種內(nèi)存檢索系統(tǒng)和方法、以及實(shí)時(shí)檢索系統(tǒng)和方法
【專利摘要】本發(fā)明公開了一種內(nèi)存檢索系統(tǒng),所述系統(tǒng)包括:索引模塊和檢索模塊;其中,索引模塊,設(shè)置有多個(gè)索引數(shù)據(jù)庫,用于分庫得到和記錄索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)同步給所述檢索模塊;檢索模塊,用于接收所述索引模塊同步的索引數(shù)據(jù),更新內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫,并將相應(yīng)的索引數(shù)據(jù)庫指針切換到更新后的索引數(shù)據(jù)庫上。相應(yīng)的,本發(fā)明還公開了一種內(nèi)存檢索方法、實(shí)時(shí)檢索系統(tǒng)以及實(shí)時(shí)檢索方法,能較好的支持實(shí)時(shí)檢索,在實(shí)際應(yīng)用中可到達(dá)索引數(shù)據(jù)的秒極更新,并且降低了硬件設(shè)備的成本,提高了檢索效率。
【專利說明】一種內(nèi)存檢索系統(tǒng)和方法、以及實(shí)時(shí)檢索系統(tǒng)和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理技術(shù),尤其涉及一種內(nèi)存檢索系統(tǒng)和方法、以及實(shí)時(shí)檢索系統(tǒng)和方法。
【背景技術(shù)】
[0002]現(xiàn)有支持實(shí)時(shí)檢索的系統(tǒng),將索引和檢索合并到一個(gè)進(jìn)程中,它將索引和檢索合并到一個(gè)進(jìn)程里,新的倒排索引可以立即被檢索使用。當(dāng)內(nèi)存中的索引數(shù)據(jù)達(dá)到閾值或者間隔時(shí)間達(dá)到閾值后,將內(nèi)存的索引數(shù)據(jù)合并到磁盤的索引數(shù)據(jù)中。如此,檢索時(shí)需要同時(shí)查找內(nèi)存的索引數(shù)據(jù)和磁盤的索引數(shù)據(jù)。當(dāng)檢索數(shù)據(jù)集較小時(shí),該檢索系統(tǒng)的實(shí)時(shí)性能夠滿足要求。但由于將檢索和索引集成在一個(gè)進(jìn)程里,檢索和索引均會(huì)消耗大量的計(jì)算資源,在擁有海量數(shù)據(jù)的檢索系統(tǒng)中,采用類似的檢索架構(gòu)將消耗大量的硬件設(shè)備,成本高且效率低。

【發(fā)明內(nèi)容】

[0003]有鑒于此,本發(fā)明的主要目的在于提供一種內(nèi)存檢索系統(tǒng)和方法、以及實(shí)時(shí)檢索系統(tǒng)和方法,不僅能夠?qū)崿F(xiàn)實(shí)時(shí)快速的內(nèi)存檢索,而且能夠降低成本和提高效率。
[0004]為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0005]本發(fā)明提供了一種內(nèi)存檢索系統(tǒng),所述系統(tǒng)包括:索引模塊和檢索模塊;其中,索引模塊,設(shè)置有多個(gè)索引數(shù)據(jù)庫,用于分庫得到和記錄索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)同步給所述檢索模塊;
[0006]檢索模塊,用于接收所述索引模塊同步的索引數(shù)據(jù),更新內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫,并將相應(yīng)的索引數(shù)據(jù)庫指針切換到更新后的索引數(shù)據(jù)庫上。
[0007]在上述方案中,所述索引模塊,用于對當(dāng)前接收到的原始數(shù)據(jù)進(jìn)行處理,得到索引數(shù)據(jù)并記錄到當(dāng)前索引數(shù)據(jù)庫,將當(dāng)前索引數(shù)據(jù)庫的索引數(shù)據(jù)同步給所述檢索模塊。
[0008]在上述方案中,所述索引模塊設(shè)置的各索引數(shù)據(jù)庫按照所保存數(shù)據(jù)的更新時(shí)間排序;所述索引模塊,還用于在當(dāng)前索引數(shù)據(jù)庫存滿時(shí),將當(dāng)前得到索引數(shù)據(jù)記錄到下一個(gè)索弓I數(shù)據(jù)庫,并將下一個(gè)索弓I數(shù)據(jù)庫的索弓I數(shù)據(jù)同步給所述檢索模塊;如此往復(fù),在最后一個(gè)索引數(shù)據(jù)庫存滿時(shí),清空第一個(gè)索引數(shù)據(jù)庫,將當(dāng)前得到的索引數(shù)據(jù)記錄到第一個(gè)索引數(shù)據(jù)庫,并將第一個(gè)索引數(shù)據(jù)庫的索引數(shù)據(jù)同步給所述檢索模塊。
[0009]在上述方案中,所述索引模塊包括數(shù)據(jù)接收子模塊、索引數(shù)據(jù)生成子模塊和索引數(shù)據(jù)同步子模塊;其中,
[0010]數(shù)據(jù)接收子模塊,用于接收原始數(shù)據(jù),生成源數(shù)據(jù)文件;
[0011]索引數(shù)據(jù)生成子模塊,用于對所述源數(shù)據(jù)文件進(jìn)行處理,得到倒排信息,保存到當(dāng)前索引數(shù)據(jù)庫的倒排庫,并通知所述索引數(shù)據(jù)同步子模塊;
[0012]索引數(shù)據(jù)同步子模塊,用于在接收到所述索引數(shù)據(jù)生成子模塊的通知后,將當(dāng)前索引數(shù)據(jù)庫中倒排庫的倒排信息同步給所述檢索模塊。[0013]在上述方案中,所述索引模塊設(shè)置的各索引數(shù)據(jù)庫包括一個(gè)用于記錄順排信息的順排庫和一個(gè)用于記錄倒排信息的倒排庫;
[0014]所述索引數(shù)據(jù)生成子模塊,用于對所述源數(shù)據(jù)文件進(jìn)行順排處理,得到順排信息并記錄到當(dāng)前索引數(shù)據(jù)庫的順排庫,再對所述順排信息進(jìn)行倒排處理,得到倒排信息并記錄到當(dāng)前索引數(shù)據(jù)庫的倒排庫。
[0015]在上述方案中,所述檢索模塊,用于:接收所述索引數(shù)據(jù)同步子模塊同步的倒排信息,先將所接收到的倒排信息加載到內(nèi)存的一個(gè)臨時(shí)數(shù)據(jù)庫中,待當(dāng)前索引數(shù)據(jù)庫的倒排庫中所有倒排信息同步完成后,將相應(yīng)的索引數(shù)據(jù)庫指針切換到所述臨時(shí)數(shù)據(jù)庫上,并將所述臨時(shí)數(shù)據(jù)庫作為新的索引數(shù)據(jù)庫替換掉內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫。
[0016]本發(fā)明還提供了一種實(shí)時(shí)檢索系統(tǒng),所述實(shí)時(shí)檢索系統(tǒng)包括磁盤檢索子系統(tǒng)、第一內(nèi)存檢索子系統(tǒng)和第二內(nèi)存檢索子系統(tǒng);其中,
[0017]所述磁盤檢索子系統(tǒng)包含有全部的索引數(shù)據(jù),用于對全部數(shù)據(jù)進(jìn)行檢索;
[0018]所述第一內(nèi)存檢索子系統(tǒng)包含最近第一時(shí)間閾值內(nèi)更新的索引數(shù)據(jù),用于對最近第一時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索;
[0019]所述第二內(nèi)存檢索子系統(tǒng)包含最近第二時(shí)間閾值內(nèi)更新的索引數(shù)據(jù),用于對最近第二時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索;
[0020]所述第一時(shí)間閾值和第二時(shí)間閾值為預(yù)先設(shè)置,且所述第二時(shí)間閾值小于所述第一時(shí)間閾值。
[0021]在上述方案中,所述第一內(nèi)存檢索子系統(tǒng)包括:第一索引模塊和第一檢索模塊;其中,
[0022]第一索引模塊,設(shè)置有多個(gè)索引數(shù)據(jù)庫,用于分庫得到和記錄最近第一時(shí)間閾值內(nèi)更新的索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)同步給所述第一檢索模塊;
[0023]第一檢索模塊,用于接收所述第一索引模塊同步的索引數(shù)據(jù),更新內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫,并將相應(yīng)的索引數(shù)據(jù)庫指針切換到更新后的索引數(shù)據(jù)庫上;以及,用于對最近第一時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索。
[0024]在上述方案中,所述第一時(shí)間閾值為兩天。
[0025]在上述方案中,所述第二內(nèi)存檢索子系統(tǒng)包括:第二索引模塊和第二檢索模塊;其中,
[0026]第二索引模塊,設(shè)置有多個(gè)索引數(shù)據(jù)庫,用于分庫得到和記錄最近第二時(shí)間閾值內(nèi)更新的索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)同步給所述第二檢索模塊;
[0027]第二檢索模塊,用于接收所述第二索引模塊同步的索引數(shù)據(jù),更新內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫,并將相應(yīng)的索引數(shù)據(jù)庫指針切換到更新后的索引數(shù)據(jù)庫上;以及,用于對最近第二時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索。
[0028]在上述方案中,所述第二時(shí)間閾值不小于十分鐘且小于兩天。
[0029]本發(fā)明還提供了一種內(nèi)存檢索方法,所述內(nèi)存檢索方法包括:
[0030]設(shè)置多個(gè)索引數(shù)據(jù)庫,分庫得到和記錄索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)進(jìn)行同步;
[0031]接收所述同步的索引數(shù)據(jù),更新內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫,并將相應(yīng)的索引數(shù)據(jù)庫指針切換到更新后的索引數(shù)據(jù)庫上。[0032]在上述方案中,所述分庫得到和記錄索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)進(jìn)行同步,包括:
[0033]對當(dāng)前接收到的原始數(shù)據(jù)進(jìn)行處理,得到索引數(shù)據(jù)并記錄到當(dāng)前索引數(shù)據(jù)庫,將當(dāng)前索引數(shù)據(jù)庫的索引數(shù)據(jù)進(jìn)行同步。
[0034]在上述方案中,所述分庫得到和記錄索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)進(jìn)行同步,還包括:
[0035]所述各索引數(shù)據(jù)庫按照所保存數(shù)據(jù)的更新時(shí)間排序;
[0036]在當(dāng)前索引數(shù)據(jù)庫存滿時(shí),將當(dāng)前得到索引數(shù)據(jù)記錄到下一個(gè)索引數(shù)據(jù)庫,并將下一個(gè)索引數(shù)據(jù)庫的索引數(shù)據(jù)進(jìn)行同步;如此往復(fù),在最后一個(gè)索引數(shù)據(jù)庫存滿時(shí),清空第一個(gè)索引數(shù)據(jù)庫,將當(dāng)前得到的索引數(shù)據(jù)記錄到第一個(gè)索引數(shù)據(jù)庫,并將第一個(gè)索引數(shù)據(jù)庫的索引數(shù)據(jù)進(jìn)行同步。
[0037]在上述方案中,所述分庫得到和記錄索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)進(jìn)行同步,具體包括:接收原始數(shù)據(jù),生成源數(shù)據(jù)文件;對所述源數(shù)據(jù)文件進(jìn)行處理,得到倒排信息,保存到當(dāng)前索引數(shù)據(jù)庫的倒排庫;將當(dāng)前索引數(shù)據(jù)庫中倒排庫的倒排信息進(jìn)行同步。
[0038]在上述方案中,所述各索引數(shù)據(jù)庫包括一個(gè)用于記錄順排信息的順排庫和一個(gè)用于記錄倒排信息的倒排庫;
[0039]所述對所述源數(shù)據(jù)文件進(jìn)行處理,得到倒排信息,保存到當(dāng)前索引數(shù)據(jù)庫的倒排庫,包括:對所述源數(shù)據(jù)文件進(jìn)行順排處理,得到順排信息并記錄到當(dāng)前索引數(shù)據(jù)庫的順排庫,再對所述順排信息進(jìn)行倒排處理,得到倒排信息并記錄到當(dāng)前索引數(shù)據(jù)庫的倒排庫。
[0040]在上述方案中,所述接收所述同步的索引數(shù)據(jù),更新內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫,并將相應(yīng)的索引數(shù)據(jù)庫指針切換到更新后的索引數(shù)據(jù)庫上,包括:
[0041]接收所述倒排信息,先將所接收到的倒排信息加載到內(nèi)存的一個(gè)臨時(shí)數(shù)據(jù)庫中,待當(dāng)前索引數(shù)據(jù)庫的倒排庫中所有倒排信息同步完成后,將相應(yīng)的索引數(shù)據(jù)庫指針切換到所述臨時(shí)數(shù)據(jù)庫上,并將所述臨時(shí)數(shù)據(jù)庫作為新的索引數(shù)據(jù)庫替換掉內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫。
[0042]本發(fā)明還提供了一種實(shí)時(shí)檢索方法,所述方法由實(shí)時(shí)檢索系統(tǒng)實(shí)現(xiàn),所述實(shí)時(shí)檢索系統(tǒng)包括磁盤檢索子系統(tǒng)、第一內(nèi)存檢索子系統(tǒng)和第二內(nèi)存檢索子系統(tǒng);其中,所述磁盤檢索子系統(tǒng)包含有全部的索引數(shù)據(jù),用于對全部數(shù)據(jù)進(jìn)行檢索;所述第一內(nèi)存檢索子系統(tǒng)包含最近第一時(shí)間閾值內(nèi)更新的索引數(shù)據(jù),用于對最近第一時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索;所述第二內(nèi)存檢索子系統(tǒng)包含最近第二時(shí)間閾值內(nèi)更新的索引數(shù)據(jù),用于對最近第二時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索;所述第一時(shí)間閾值和第二時(shí)間閾值為預(yù)先設(shè)置,且所述第二時(shí)間閾值小于所述第一時(shí)間閾值;
[0043]所述方法包括:接收到針對全部數(shù)據(jù)的檢索請求時(shí),所述磁盤檢索子系統(tǒng)對全部數(shù)據(jù)進(jìn)行檢索;
[0044]和/或,接收到針對最近的不大于第一時(shí)間閾值且大于第二時(shí)間閾值的時(shí)間段內(nèi)數(shù)據(jù)的檢索請求時(shí),所述第一內(nèi)存檢索子系統(tǒng)對最近第一時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索;
[0045]和/或,接收到針對最近的不大于第二時(shí)間閾值的時(shí)間段內(nèi)數(shù)據(jù)的檢索請求時(shí),所述第二內(nèi)存檢索子系統(tǒng)對最近第二時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索。[0046]在上述方案中,所述第一時(shí)間閾值為兩天,所述第二時(shí)間閾值小于兩天且不小于十分鐘。
[0047]本發(fā)明的內(nèi)存檢索系統(tǒng)及方法,索引模塊分庫進(jìn)行索引數(shù)據(jù)的更新,檢索數(shù)據(jù)也能夠分庫更新內(nèi)存中的索引數(shù)據(jù),通過索引數(shù)據(jù)分庫存儲(chǔ)、增量同步索引和全內(nèi)存檢索,能較好的支持實(shí)時(shí)檢索,在實(shí)際應(yīng)用中可到達(dá)索引數(shù)據(jù)的秒極更新,并且在架構(gòu)上將索引模塊和檢索模塊分開,降低了硬件設(shè)備的成本,提高了檢索效率。
【專利附圖】

【附圖說明】
[0048]圖1為本發(fā)明實(shí)施例二中內(nèi)存檢索方法的實(shí)現(xiàn)流程圖;
[0049]圖2為本發(fā)明實(shí)施例三中內(nèi)存檢索系統(tǒng)的組成結(jié)構(gòu)示意圖;
[0050]圖3為本發(fā)明實(shí)施例三索引模塊中多個(gè)索引數(shù)據(jù)庫的設(shè)置的一種實(shí)例組成結(jié)構(gòu)示意圖;
[0051]圖4為本發(fā)明實(shí)施例三檢索模塊更新內(nèi)存中索引數(shù)據(jù)的實(shí)例示意圖;
[0052]圖5為本發(fā)明實(shí)施例三檢索模塊更新內(nèi)存中索引數(shù)據(jù)的實(shí)例示意圖;
[0053]圖6為本發(fā)明實(shí)施例四實(shí)時(shí)檢索系統(tǒng)的組成結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0054]實(shí)施例一
[0055]本發(fā)明提供一種內(nèi)存檢索系統(tǒng),包括索引模塊和檢索模塊,其中,索引模塊分庫對索引數(shù)據(jù)進(jìn)行更新并同步給檢索模塊,檢索模塊實(shí)時(shí)更新內(nèi)存中相應(yīng)的索引數(shù)據(jù)并切換索引數(shù)據(jù)庫指針,使得索引數(shù)據(jù)能夠快速及時(shí)的得到更新。
[0056]本發(fā)明的內(nèi)存檢索系統(tǒng),所述系統(tǒng)包括:索引模塊和檢索模塊;其中,索引模塊,設(shè)置有多個(gè)索引數(shù)據(jù)庫,用于分庫得到和記錄索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)同步給所述檢索模塊;檢索模塊,用于接收所述索引模塊同步的索引數(shù)據(jù),更新內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫,并將相應(yīng)的索引數(shù)據(jù)庫指針切換到更新后的索引數(shù)據(jù)庫上。
[0057]其中,所述索引模塊,用于對當(dāng)前接收到的原始數(shù)據(jù)進(jìn)行處理,得到索引數(shù)據(jù)并記錄到當(dāng)前索引數(shù)據(jù)庫,將當(dāng)前索引數(shù)據(jù)庫的索引數(shù)據(jù)同步給所述檢索模塊。這里,所述索引模塊設(shè)置的各索引數(shù)據(jù)庫按照所保存數(shù)據(jù)的更新時(shí)間排序;所述索引模塊,還用于在當(dāng)前索引數(shù)據(jù)庫存滿時(shí),將當(dāng)前得到索引數(shù)據(jù)記錄到下一個(gè)索引數(shù)據(jù)庫,并將下一個(gè)索引數(shù)據(jù)庫的索引數(shù)據(jù)同步給所述檢索模塊;如此往復(fù),在最后一個(gè)索引數(shù)據(jù)庫存滿時(shí),清空第一個(gè)索引數(shù)據(jù)庫,將當(dāng)前得到的索引數(shù)據(jù)記錄到第一個(gè)索引數(shù)據(jù)庫,并將第一個(gè)索引數(shù)據(jù)庫的索弓I數(shù)據(jù)同步給所述檢索模塊。
[0058]具體地,所述索引模塊包括數(shù)據(jù)接收子模塊、索引數(shù)據(jù)生成子模塊和索引數(shù)據(jù)同步子模塊;其中,數(shù)據(jù)接收子模塊,用于接收原始數(shù)據(jù),生成源數(shù)據(jù)文件;索引數(shù)據(jù)生成子模塊,用于對所述源數(shù)據(jù)文件進(jìn)行處理,得到倒排信息,保存到當(dāng)前索引數(shù)據(jù)庫的倒排庫,并通知所述索引數(shù)據(jù)同步子模塊;索引數(shù)據(jù)同步子模塊,用于在接收到所述索引數(shù)據(jù)生成子模塊的通知后,將當(dāng)前索引數(shù)據(jù)庫中倒排庫的倒排信息同步給所述檢索模塊。
[0059]所述索引模塊設(shè)置的各索引數(shù)據(jù)庫包括一個(gè)用于記錄順排信息的順排庫和一個(gè)用于記錄倒排信息的倒排庫;[0060]所述索引數(shù)據(jù)生成子模塊,用于對所述源數(shù)據(jù)文件進(jìn)行順排處理,得到順排信息并記錄到當(dāng)前索引數(shù)據(jù)庫的順排庫,再對所述順排信息進(jìn)行倒排處理,得到倒排信息并記錄到當(dāng)前索引數(shù)據(jù)庫的倒排庫。
[0061]具體地,所述索引數(shù)據(jù)生成子模塊,用于:對于包含數(shù)值更新的原始數(shù)據(jù),基于所述原始數(shù)據(jù)的ID查詢保存其倒排信息的索引數(shù)據(jù)庫,并對該索引數(shù)據(jù)庫中倒排庫的數(shù)值屬性表進(jìn)行更新;和/或,對于包含文本刪除的原始數(shù)據(jù),首先對該原始數(shù)據(jù)進(jìn)行順排處理,生成標(biāo)記有刪除命令和包含待刪除ID的順排文件、以及文檔數(shù)據(jù)屬性文件,并記錄到當(dāng)前索引庫的順排庫;然后,將待刪除ID添加到所有包含所述ID的倒排庫的刪除表中,并更新倒排庫的倒排時(shí)間戳;和/或,對于包含文本更新的原始數(shù)據(jù),首先對該原始數(shù)據(jù)進(jìn)行順排處理,生成標(biāo)記有刪除命令和包含待刪除ID的順排文件、以及文檔數(shù)據(jù)屬性文件,并記錄到當(dāng)前索引庫的順排庫;然后,將待刪除ID添加到所有包含所述ID的倒排庫的刪除表中,并讀取所有順排文件,對所有〈文檔,詞,位置 > 三元組進(jìn)行排序,得到倒排索引文件、倒排數(shù)值屬性表、docid-pageid映射表和刪除表,記錄到當(dāng)前索引數(shù)據(jù)庫的倒排庫,并更新所述倒排庫的倒排時(shí)間戳;和/或,對于包含文本新增的原始數(shù)據(jù),首先對該原始數(shù)據(jù)進(jìn)行順排處理,生成順排文件和文檔數(shù)據(jù)屬性文件,并記錄到當(dāng)前索引庫的順排庫;然后,讀取所有順排文件,對所有〈文檔,詞,位置 > 三元組進(jìn)行排序,得到倒排索引文件、倒排數(shù)值屬性表、docid-pageid映射表和刪除表,記錄到當(dāng)前索引數(shù)據(jù)庫的倒排庫,并更新所述倒排庫的倒排時(shí)間戳。
[0062]其中,所述檢索模塊,用于:接收所述索引數(shù)據(jù)同步子模塊同步的倒排信息,先將所接收到的倒排信息加載到內(nèi)存的一個(gè)臨時(shí)數(shù)據(jù)庫中,待當(dāng)前索引數(shù)據(jù)庫的倒排庫中所有倒排信息同步完成后,將相應(yīng)的索引數(shù)據(jù)庫指針切換到所述臨時(shí)數(shù)據(jù)庫上,并將所述臨時(shí)數(shù)據(jù)庫作為新的索引數(shù)據(jù)庫替換掉內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫。
[0063]實(shí)施例二
[0064]相應(yīng)的,本發(fā)明還提供了一種內(nèi)存檢索方法,如圖1所示,所述內(nèi)存檢索方法包括:
[0065]步驟101:設(shè)置多個(gè)索引數(shù)據(jù)庫,分庫得到和記錄索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)進(jìn)行同步;
[0066]這里,步驟101由實(shí)施例一中所述系統(tǒng)的索引模塊來實(shí)現(xiàn),并同步到實(shí)施例一中所述的檢索模塊。
[0067]步驟102:接收所述同步的索引數(shù)據(jù),更新內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫,并將相應(yīng)的索引數(shù)據(jù)庫指針切換到更新后的索引數(shù)據(jù)庫上。
[0068]這里,步驟102由實(shí)施例一中所述系統(tǒng)的檢索模塊來實(shí)現(xiàn)。
[0069]其中,所述分庫得到和記錄索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)同步給檢索模塊,包括:對當(dāng)前接收到的原始數(shù)據(jù)進(jìn)行處理,得到索引數(shù)據(jù)并記錄到當(dāng)前索引數(shù)據(jù)庫,將當(dāng)前索引數(shù)據(jù)庫的索引數(shù)據(jù)同步給檢索模塊。
[0070]這里,所述分庫得到和記錄索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)同步給檢索模塊,還包括:所述各索引數(shù)據(jù)庫按照所保存數(shù)據(jù)的更新時(shí)間排序;在當(dāng)前索引數(shù)據(jù)庫存滿時(shí),索引模塊將當(dāng)前得到索引數(shù)據(jù)記錄到下一個(gè)索引數(shù)據(jù)庫,并將下一個(gè)索引數(shù)據(jù)庫的索引數(shù)據(jù)同步給檢索模塊;如此往復(fù),在最后一個(gè)索引數(shù)據(jù)庫存滿時(shí),清空第一個(gè)索引數(shù)據(jù)庫,將當(dāng)前得到的索引數(shù)據(jù)記錄到第一個(gè)索引數(shù)據(jù)庫,并將第一個(gè)索引數(shù)據(jù)庫的索引數(shù)據(jù)同步給檢索模塊。
[0071]具體地,所述分庫得到和記錄索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)同步給檢索模塊,具體包括:接收原始數(shù)據(jù),生成源數(shù)據(jù)文件;對所述源數(shù)據(jù)文件進(jìn)行處理,得到倒排信息,保存到當(dāng)前索引數(shù)據(jù)庫的倒排庫;將當(dāng)前索引數(shù)據(jù)庫中倒排庫的倒排信息同步給所述檢索模塊。
[0072]這里,所述各索引數(shù)據(jù)庫包括一個(gè)用于記錄順排信息的順排庫和一個(gè)用于記錄倒排信息的倒排庫;所述對所述源數(shù)據(jù)文件進(jìn)行處理,得到倒排信息,保存到當(dāng)前索引數(shù)據(jù)庫的倒排庫,包括:對所述源數(shù)據(jù)文件進(jìn)行順排處理,得到順排信息并記錄到當(dāng)前索引數(shù)據(jù)庫的順排庫,再對所述順排信息進(jìn)行倒排處理,得到倒排信息并記錄到當(dāng)前索引數(shù)據(jù)庫的倒排庫。
[0073]其中,所述檢索模塊接收所述索弓I模塊同步的索引數(shù)據(jù),更新內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫,并將相應(yīng)的索引數(shù)據(jù)庫指針切換到更新后的索引數(shù)據(jù)庫上,包括:所述檢索模塊接收所述倒排信息,先將所接收到的倒排信息加載到內(nèi)存的一個(gè)臨時(shí)數(shù)據(jù)庫中,待當(dāng)前索引數(shù)據(jù)庫的倒排庫中所有倒排信息同步完成后,將相應(yīng)的索引數(shù)據(jù)庫指針切換到所述臨時(shí)數(shù)據(jù)庫上,并將所述臨時(shí)數(shù)據(jù)庫作為新的索引數(shù)據(jù)庫替換掉內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫。
[0074]實(shí)施例三
[0075]如圖2所示,本發(fā)明提出的內(nèi)存檢索系統(tǒng)可以包括索引模塊和檢索模塊,其中,索引模塊和檢索模塊分別設(shè)置在兩個(gè)不同的設(shè)備上,所述兩個(gè)不同的設(shè)備之間可以通過有線方式連接或者通過無線方式通信。索引模塊,用于對實(shí)時(shí)接收到的原始數(shù)據(jù)進(jìn)行處理,得到倒排信息并記錄到當(dāng)前索引數(shù)據(jù)庫的倒排庫,將所述倒排庫中的倒排信息同步給所述檢索模塊;檢索模塊,用于接收所述索引模塊同步的倒排信息,更新內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫,并將相應(yīng)的索引數(shù)據(jù)庫指針切換到更新后的相應(yīng)索引數(shù)據(jù)庫上。
[0076]其中,索引模塊包括數(shù)據(jù)接收子模塊、索引數(shù)據(jù)生成子模塊和索引數(shù)據(jù)同步子模塊,數(shù)據(jù)接收子模塊用于接收原始數(shù)據(jù),生成源數(shù)據(jù)文件;索引數(shù)據(jù)生成子模塊,用于對所述源數(shù)據(jù)文件進(jìn)行處理,得到倒排信息,保存到當(dāng)前索引數(shù)據(jù)庫的倒排庫,并通知所述索引數(shù)據(jù)同步子模塊;索引數(shù)據(jù)同步子模塊,用于在接收到所述索引數(shù)據(jù)生成子模塊的通知后,將當(dāng)前索引數(shù)據(jù)庫中倒排庫的倒排信息同步給所述檢索模塊。
[0077]具體地,數(shù)據(jù)接收子模塊接收到的原始數(shù)據(jù)中包含數(shù)據(jù)操作命令和數(shù)據(jù)內(nèi)容,數(shù)據(jù)操作命令主要包括以下四種類型:文本新增、文本更新、文本刪除和數(shù)值更新。其中,對應(yīng)文本新增的原始數(shù)據(jù)可以是以固定的xml格式表示的文檔,該文檔的域包括文本域和數(shù)值域,文本域用于記錄文檔的文本信息,如標(biāo)題、正文等,數(shù)值域用于記錄文檔的數(shù)值屬性,如文檔的ID、指紋等標(biāo)識信息。對應(yīng)數(shù)值更新的原始數(shù)據(jù)僅包含需更新文檔的ID及對應(yīng)的數(shù)值屬性。對應(yīng)文本刪除的原始數(shù)據(jù)包含要?jiǎng)h除文檔的ID。這里,生成源數(shù)據(jù)文件時(shí),對應(yīng)文本新增、文本更新、文本刪除的原始數(shù)據(jù)均被寫入同一個(gè)文件中,對應(yīng)數(shù)值更新的原始數(shù)據(jù)則存放在另一個(gè)單獨(dú)的文件中。
[0078]在索引數(shù)據(jù)生成子模塊設(shè)置多個(gè)索引數(shù)據(jù)庫,每個(gè)索引數(shù)據(jù)庫可以具有相同的容量閾值,該容量閾值用于表示索引數(shù)據(jù)庫最大能夠存放相應(yīng)數(shù)量的原始數(shù)據(jù)的索引數(shù)據(jù),各索引數(shù)據(jù)庫按照所保存索引數(shù)據(jù)的更新時(shí)間進(jìn)行排序,第一個(gè)索引數(shù)據(jù)庫更新時(shí)間最早,最后一個(gè)索引數(shù)據(jù)庫更新時(shí)間最晚。相應(yīng)的,在內(nèi)存中也相應(yīng)的設(shè)置有多個(gè)索引數(shù)據(jù)庫,內(nèi)存中的各索引數(shù)據(jù)庫分別與所述索引數(shù)據(jù)生成子模塊中設(shè)置的各索引數(shù)據(jù)庫相對應(yīng)。
[0079]例如,如圖3所示,可以在索引數(shù)據(jù)生成子模塊中設(shè)置N(N為大于I的整數(shù))個(gè)索
引數(shù)據(jù)庫,分別是I號索引數(shù)據(jù)庫、2號索引數(shù)據(jù)庫、3號索引數(shù)據(jù)庫........N-1號索引數(shù)
據(jù)庫、N號索引數(shù)據(jù)庫,各索引數(shù)據(jù)庫按照數(shù)據(jù)更新時(shí)間(如,其倒排庫的更新時(shí)間戳)排序,I號索引數(shù)據(jù)庫更新時(shí)間最早,N號索引數(shù)據(jù)庫更新時(shí)間最晚,如果當(dāng)前使用的是2號索引數(shù)據(jù)庫,則索引數(shù)據(jù)生成子模塊將當(dāng)前得到的索引數(shù)據(jù)合并保存到2號索引數(shù)據(jù)庫中,也就是說,索引數(shù)據(jù)生成子模塊將當(dāng)前得到的順排信息以及倒排信息合并保存到2號索引數(shù)據(jù)庫中。
[0080]每個(gè)索引數(shù)據(jù)庫中包括一個(gè)順排庫和一個(gè)倒排庫,其中,順排庫用于記錄該庫中所有原始數(shù)據(jù)的順排信息,可以包括順排文件和文檔數(shù)據(jù)屬性文件等,順排文件用于記錄所有的三元組〈文檔,詞,位置〉,文檔屬性文件用于記錄各原始數(shù)據(jù)的數(shù)值屬性。倒排庫用于記錄該庫中所有原始數(shù)據(jù)的倒排信息,可以包括倒排索引文件、倒排數(shù)值屬性表、docid-pageid映射表和刪除表等。
[0081]對于數(shù)據(jù)接收子模塊得到的源數(shù)據(jù)文件,索引數(shù)據(jù)生成子模塊實(shí)時(shí)對所述源數(shù)據(jù)文件進(jìn)行掃描,對當(dāng)前更新的原始數(shù)據(jù)進(jìn)行順排處理和倒排處理,并將得到的順排信息以及倒排信息保存到當(dāng)前索引數(shù)據(jù)庫中。具體地,索引數(shù)據(jù)生成子模塊對當(dāng)前更新的原始數(shù)據(jù)進(jìn)行順排處理,得到順排文件和文檔數(shù)據(jù)屬性文件等順排信息并記錄到當(dāng)前索引數(shù)據(jù)庫的順排庫中,再根據(jù)所述順排文件和文檔數(shù)據(jù)屬性文件等順排信息得到倒排索引文件、倒排數(shù)值屬性表、docid-pageid映射表和刪除表等倒排信息并記錄到當(dāng)前索引數(shù)據(jù)庫的倒排庫中。
[0082]如果當(dāng)前索引數(shù)據(jù)庫中數(shù)據(jù)數(shù)量達(dá)到了預(yù)設(shè)的容量閾值,則將當(dāng)前得到的順排信息以及倒排信息保存到當(dāng)前索引數(shù)據(jù)庫的下一個(gè)索引數(shù)據(jù)庫中。如果當(dāng)前所有索引數(shù)據(jù)庫的數(shù)據(jù)數(shù)量均達(dá)到了預(yù)設(shè)的容量閾值,則將第一個(gè)索引數(shù)據(jù)庫清空,將當(dāng)前得到的順排信息以及倒排信息保存到第一個(gè)索引數(shù)據(jù)庫中,也就是說,將當(dāng)前得到的順排信息記錄到第一個(gè)索引數(shù)據(jù)庫的順排庫,并將當(dāng)前得到的倒排信息記錄到第一個(gè)索引數(shù)據(jù)庫的倒排庫中。索引數(shù)據(jù)生成子模塊按照時(shí)間順序?qū)⒌玫降乃饕龜?shù)據(jù)保存各索引數(shù)據(jù)庫,對于如圖3所示的例子,在I號索引數(shù)據(jù)庫存滿時(shí),將索引數(shù)據(jù)存放到2號索引數(shù)據(jù)庫,在2號索引數(shù)據(jù)庫存滿時(shí),將索引數(shù)據(jù)存放到3號索引數(shù)據(jù)庫,依此類推,直到N號索引數(shù)據(jù)存滿時(shí),清空I號索引數(shù)據(jù)庫清空,將索引數(shù)據(jù)存放到I號索引數(shù)據(jù)庫。如此,索引數(shù)據(jù)可以在各索引數(shù)據(jù)庫中循環(huán)存儲(chǔ),也就是說,可以將順排信息和倒排信息在各索引數(shù)據(jù)庫中循環(huán)進(jìn)行存儲(chǔ)。
[0083]具體地,針對不同的原始數(shù)據(jù),索引數(shù)據(jù)生成子模塊進(jìn)行如下的順排處理和倒排處理:
[0084]第一,對于包含數(shù)值更新的原始數(shù)據(jù),基于所述原始數(shù)據(jù)的ID查詢保存其倒排信息的索引數(shù)據(jù)庫,并對該索引數(shù)據(jù)庫中倒排庫的數(shù)值屬性表進(jìn)行更新。具體地,將所述索引數(shù)據(jù)庫中倒排庫的數(shù)值屬性表中相應(yīng)的數(shù)值更新為與原始數(shù)據(jù)中數(shù)值相一致,并更新所述數(shù)值屬性表的時(shí)間戳。
[0085]第二,對于包含文本刪除的原始數(shù)據(jù),首先對該原始數(shù)據(jù)進(jìn)行順排處理,得到順排信息,也就是說,生成標(biāo)記有刪除命令和包含待刪除ID的順排文件、以及文檔數(shù)據(jù)屬性文件,并記錄到當(dāng)前索引庫的順排庫;然后,進(jìn)行倒排處理,也就是將待刪除ID添加到所有包含所述ID的倒排庫的刪除表中,并更新所述倒排庫的倒排時(shí)間戳。
[0086]第三,對于包含文本更新的原始數(shù)據(jù),首先對該原始數(shù)據(jù)進(jìn)行順排處理,生成順排信息,也就是說,生成標(biāo)記有刪除命令和包含待刪除ID的順排文件、以及文檔數(shù)據(jù)屬性文件,并記錄到當(dāng)前索引庫的順排庫;然后,進(jìn)行倒排處理,也就是將待刪除ID添加到所有包含所述ID的倒排庫的刪除表中,并讀取所有順排文件,對所有〈文檔,詞,位置 > 三元組進(jìn)行排序,得到倒排索引文件、倒排數(shù)值屬性表、docid-pageid映射表和刪除表等倒排信息,記錄到當(dāng)前索引數(shù)據(jù)庫的倒排庫,并更新所述倒排庫的倒排時(shí)間戳。
[0087]第四,對于包含文本新增的原始數(shù)據(jù),首先對該原始數(shù)據(jù)進(jìn)行順排處理,生成順排信息,也就是說,生成順排文件和文檔數(shù)據(jù)屬性文件,并記錄到當(dāng)前索引庫的順排庫;然后,進(jìn)行倒排處理,也就是讀取所有順排文件,對所有〈文檔,詞,位置 > 三元組進(jìn)行排序,得到倒排索引文件、倒排數(shù)值屬性表、docid-pageid映射表和刪除表等倒排信息,記錄到當(dāng)前索引數(shù)據(jù)庫的倒排庫,并更新倒排庫的倒排時(shí)間戳。
[0088]需要說明的是,索引數(shù)據(jù)生成子模塊進(jìn)行上述處理的過程中,首先對指定數(shù)量的原始數(shù)據(jù)進(jìn)行上述的順排處理,得到其順排信息并記錄到當(dāng)前索引數(shù)據(jù)庫的順排庫,然后再讀取得到的所有倒排信息,對所有倒排信息一起進(jìn)行上述的倒排處理,得到其倒排信息并記錄到當(dāng)前索引數(shù)據(jù)庫的倒排庫中。完成以上操作后,便得到了一個(gè)新的倒排庫。這里,索引數(shù)據(jù)生成子模塊一次處理的原始數(shù)據(jù)數(shù)量不大于一個(gè)索引數(shù)據(jù)庫的容量閾值,可以是索引數(shù)據(jù)庫容量閾值的幾分之一,也可以等于索引數(shù)據(jù)庫的容量閾值。
[0089]在生成一個(gè)新的倒排庫或更新一個(gè)倒排庫后,索引數(shù)據(jù)生成子模塊通知索引數(shù)據(jù)同步子模塊進(jìn)行數(shù)據(jù)同步,索引數(shù)據(jù)同步子模塊將當(dāng)前索引數(shù)據(jù)庫的倒排庫中的倒排信息同步給檢索模塊。這里,除了當(dāng)前正在使用的索引數(shù)據(jù)庫外,其它索引數(shù)據(jù)庫沒有變化,不需要同步。如此,能夠減低數(shù)據(jù)同步對檢索系統(tǒng)性能的影響。
[0090]檢索模塊接收索引數(shù)據(jù)同步子模塊同步的倒排信息,先將所接收到的倒排信息加載到內(nèi)存的一個(gè)臨時(shí)數(shù)據(jù)庫中,待當(dāng)前索引數(shù)據(jù)庫的倒排庫中所有倒排信息同步完成后,檢索模塊將相應(yīng)的索引數(shù)據(jù)庫指針切換到所述臨時(shí)數(shù)據(jù)庫上,并將所述臨時(shí)數(shù)據(jù)庫作為新的索引數(shù)據(jù)庫替換掉內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫。
[0091]例如,如圖4和圖5所示,當(dāng)前使用3號索引數(shù)據(jù)庫,則索引數(shù)據(jù)同步子模塊將3號索引數(shù)據(jù)庫的倒排庫中的倒排信息同步給檢索模塊,檢索模塊接收所述倒排信息并加載到內(nèi)存的一個(gè)臨時(shí)數(shù)據(jù)庫中,在3號索引數(shù)據(jù)庫的倒排庫中所有的倒排信息均同步到該臨時(shí)數(shù)據(jù)庫后,檢索模塊將所述臨時(shí)數(shù)據(jù)庫作為新的3號索引數(shù)據(jù)庫,將內(nèi)存中原有的3號索引數(shù)據(jù)庫刪除,并將3號索引數(shù)據(jù)庫的指針切換到所述新的3號索引數(shù)據(jù)庫上。如此,能夠確保檢索模塊依據(jù)實(shí)時(shí)更新的索引數(shù)據(jù)向外提供檢索服務(wù)。并且,由于切庫操作是在內(nèi)存中通過切換指針實(shí)現(xiàn),可以平滑切換,基本不影響檢索模塊向外提供檢索服務(wù)。
[0092]綜上可知,對于一篇文檔,在進(jìn)入索引模塊后要經(jīng)過順排、倒排、以及數(shù)據(jù)同步三步處理。其中,由于每次都是對新增部分?jǐn)?shù)據(jù)作處理,順排處理的耗時(shí)較小,數(shù)據(jù)同步主要是網(wǎng)絡(luò)傳輸操作,也不會(huì)成為性能瓶頸,每次都要對一個(gè)索引數(shù)據(jù)庫中的所有順排信息進(jìn)行倒排處理,通常比較耗時(shí),但由于上述過程中限制了單個(gè)索引數(shù)據(jù)庫的容量,因而會(huì)減少倒排時(shí)間,加快索引數(shù)據(jù)的更新速度。
[0093]本實(shí)施例中,通過分庫、增量同步和全內(nèi)存檢索等方式,可以使索引數(shù)據(jù)的更新速度得到大大提升。
[0094]實(shí)施例四
[0095]在實(shí)際使用中,還可以將多套檢索系統(tǒng)組合起來使用以實(shí)現(xiàn)實(shí)時(shí)檢索。
[0096]本實(shí)施例提供了一種實(shí)時(shí)檢索系統(tǒng),如圖6所不,包括磁盤檢索子系統(tǒng)、第一內(nèi)存檢索子系統(tǒng)和第二內(nèi)存檢索子系統(tǒng);其中,
[0097]所述磁盤檢索子系統(tǒng)包含有全部的索引數(shù)據(jù),用于對全部數(shù)據(jù)進(jìn)行檢索;
[0098]所述第一內(nèi)存檢索子系統(tǒng)包含最近第一時(shí)間閾值內(nèi)更新的索引數(shù)據(jù),用于對最近第一時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索;
[0099]所述第二內(nèi)存檢索子系統(tǒng)包含最近第二時(shí)間閾值內(nèi)更新的索引數(shù)據(jù),用于對最近第二時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索;
[0100]所述第一時(shí)間閾值和第二時(shí)間閾值為預(yù)先設(shè)置,且所述第二時(shí)間閾值小于所述第一時(shí)間閾值。
[0101]這里,所述第一內(nèi)存檢索子系統(tǒng)包括:第一索引模塊和第一檢索模塊;其中,第一索引模塊,設(shè)置有多個(gè)索引數(shù)據(jù)庫,用于分庫得到和記錄最近第一時(shí)間閾值內(nèi)更新的索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)同步給所述第一檢索模塊;第一檢索模塊,用于接收所述第一索引模塊同步的索引數(shù)據(jù),更新內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫,并將相應(yīng)的索引數(shù)據(jù)庫指針切換到更新后的索引數(shù)據(jù)庫上;以及,用于對最近第一時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索。
[0102]這里,所述第二內(nèi)存檢索子系統(tǒng)包括:第二索引模塊和第二檢索模塊;其中,第二索引模塊,設(shè)置有多個(gè)索引數(shù)據(jù)庫,用于分庫得到和記錄最近第二時(shí)間閾值內(nèi)更新的索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)同步給所述第二檢索模塊;第二檢索模塊,用于接收所述第二索引模塊同步的索引數(shù)據(jù),更新內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫,并將相應(yīng)的索引數(shù)據(jù)庫指針切換到更新后的索引數(shù)據(jù)庫上;以及,用于對最近第二時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索。
[0103]也就是說,本實(shí)施例中的第一內(nèi)存檢索子系統(tǒng)與第二內(nèi)存檢索子系統(tǒng),其組成結(jié)構(gòu)均與實(shí)施例一中的內(nèi)存檢索系統(tǒng)相同,所不同的是,本實(shí)施例限定第一內(nèi)存檢索子系統(tǒng)更新第一時(shí)間閾值范圍內(nèi)的索引數(shù)據(jù),限定第二內(nèi)存檢索子系統(tǒng)更新第二時(shí)間閾值范圍內(nèi)的索引數(shù)據(jù)。
[0104]相應(yīng)的,本實(shí)施例還提供了一種實(shí)時(shí)檢索方法,其特征在于,所述方法由上述的實(shí)時(shí)檢索系統(tǒng)實(shí)現(xiàn);所述方法可以包括:接收到針對全部數(shù)據(jù)的檢索請求時(shí),所述磁盤檢索子系統(tǒng)對全部數(shù)據(jù)進(jìn)行檢索;和/或,接收到針對最近的不大于第一時(shí)間閾值且大于第二時(shí)間閾值的時(shí)間段內(nèi)數(shù)據(jù)的檢索請求時(shí),所述第一內(nèi)存檢索子系統(tǒng)對最近第一時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索;和/或,接收到針對最近的不大于第二時(shí)間閾值的時(shí)間段內(nèi)數(shù)據(jù)的檢索請求時(shí),所述第二內(nèi)存檢索子系統(tǒng)對最近第二時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索。
[0105]這里,所述第一時(shí)間閾值可以為兩天,所述第二時(shí)間閾值小于兩天且不小于10分鐘,一般來說,設(shè)置第二時(shí)間閾值為10分鐘。
[0106]其中,磁盤檢索子系統(tǒng)的結(jié)構(gòu)與現(xiàn)有的磁盤檢索系統(tǒng)相同,保存有全量數(shù)據(jù)的索引數(shù)據(jù),每天更新一次索弓I數(shù)據(jù),能夠?qū)ψ罱惶熘暗娜繑?shù)據(jù)進(jìn)行檢索,但無法覆蓋最近一天更新的數(shù)據(jù)。第一內(nèi)存檢索子系統(tǒng)可以對最近兩天內(nèi)更新的數(shù)據(jù)進(jìn)行檢索,但是由于兩天內(nèi)數(shù)據(jù)更新量較大,其索引更新可能滿足不了實(shí)時(shí)要求。第二內(nèi)存檢索子系統(tǒng)可以對最近十分鐘內(nèi)更新的數(shù)據(jù)進(jìn)行檢索,索引數(shù)據(jù)每10分鐘更新一次,由于10分鐘內(nèi)的數(shù)據(jù)更新量較小,索引數(shù)據(jù)的更新更接近實(shí)時(shí),進(jìn)而實(shí)現(xiàn)實(shí)時(shí)的數(shù)據(jù)檢索。通過將上述的三個(gè)子系統(tǒng)組合為一個(gè)檢索系統(tǒng),可以實(shí)現(xiàn)實(shí)時(shí)檢索,并且保證了檢索數(shù)據(jù)的全召回。
[0107]以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種內(nèi)存檢索系統(tǒng),其特征在于,所述系統(tǒng)包括:索引模塊和檢索模塊;其中, 索引模塊,設(shè)置有多個(gè)索引數(shù)據(jù)庫,用于分庫得到和記錄索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)同步給所述檢索模塊; 檢索模塊,用于接收所述索引模塊同步的索引數(shù)據(jù),更新內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫,并將相應(yīng)的索引數(shù)據(jù)庫指針切換到更新后的索引數(shù)據(jù)庫上。
2.根據(jù)權(quán)利要求1所述的內(nèi)存檢索系統(tǒng),其特征在于,所述索引模塊,用于對當(dāng)前接收到的原始數(shù)據(jù)進(jìn)行處理,得到索引數(shù)據(jù)并記錄到當(dāng)前索引數(shù)據(jù)庫,將當(dāng)前索引數(shù)據(jù)庫的索引數(shù)據(jù)同步給所述檢索模塊。
3.根據(jù)權(quán)利要求2所述的內(nèi)存檢索系統(tǒng),其特征在于, 所述索引模塊設(shè)置的各索引數(shù)據(jù)庫按照所保存數(shù)據(jù)的更新時(shí)間排序; 所述索引模塊,還用于在當(dāng)前索引數(shù)據(jù)庫存滿時(shí),將當(dāng)前得到索引數(shù)據(jù)記錄到下一個(gè)索引數(shù)據(jù)庫,并將下一個(gè)索引數(shù)據(jù)庫的索引數(shù)據(jù)同步給所述檢索模塊;如此往復(fù),在最后一個(gè)索引數(shù)據(jù)庫存滿時(shí),清空第一個(gè)索引數(shù)據(jù)庫,將當(dāng)前得到的索引數(shù)據(jù)記錄到第一個(gè)索引數(shù)據(jù)庫,并將第一個(gè)索引數(shù)據(jù)庫的索引數(shù)據(jù)同步給所述檢索模塊。
4.根據(jù)權(quán)利要求1至3任一項(xiàng)所述的內(nèi)存檢索系統(tǒng),其特征在于,所述索引模塊包括數(shù)據(jù)接收子模塊、索引數(shù)據(jù)生成子模塊和索引數(shù)據(jù)同步子模塊;其中, 數(shù)據(jù)接收子模塊,用于接收原始數(shù)據(jù),生成源數(shù)據(jù)文件; 索引數(shù)據(jù)生成子模塊,用于對所述源數(shù)據(jù)文件進(jìn)行處理,得到倒排信息,保存到當(dāng)前索引數(shù)據(jù)庫的倒排庫,并通知所述索引數(shù)據(jù)同步子模塊; 索引數(shù)據(jù)同步子模塊,用于在接收到所述索引數(shù)據(jù)生成子模塊的通知后,將當(dāng)前索引數(shù)據(jù)庫中倒排庫的倒排信息同步給所述檢索模塊。
5.根據(jù)權(quán)利要求4所述的內(nèi)存檢索系統(tǒng),其特征在于, 所述索引模塊設(shè)置的各索引數(shù)據(jù)庫包括一個(gè)用于記錄順排信息的順排庫和一個(gè)用于記錄倒排信息的倒排庫; 所述索引數(shù)據(jù)生成子模塊,用于對所述源數(shù)據(jù)文件進(jìn)行順排處理,得到順排信息并記錄到當(dāng)前索引數(shù)據(jù)庫的順排庫,再對所述順排信息進(jìn)行倒排處理,得到倒排信息并記錄到當(dāng)前索引數(shù)據(jù)庫的倒排庫。
6.根據(jù)權(quán)利要求5所述的內(nèi)存檢索系統(tǒng),其特征在于,所述檢索模塊,用于:接收所述索引數(shù)據(jù)同步子模塊同步的倒排信息,先將所接收到的倒排信息加載到內(nèi)存的一個(gè)臨時(shí)數(shù)據(jù)庫中,待當(dāng)前索引數(shù)據(jù)庫的倒排庫中所有倒排信息同步完成后,將相應(yīng)的索引數(shù)據(jù)庫指針切換到所述臨時(shí)數(shù)據(jù)庫上,并將所述臨時(shí)數(shù)據(jù)庫作為新的索引數(shù)據(jù)庫替換掉內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫。
7.一種實(shí)時(shí)檢索系統(tǒng),其特征在于,所述實(shí)時(shí)檢索系統(tǒng)包括磁盤檢索子系統(tǒng)、第一內(nèi)存檢索子系統(tǒng)和第二內(nèi)存檢索子系統(tǒng);其中, 所述磁盤檢索子系統(tǒng)包含有全部的索引數(shù)據(jù),用于對全部數(shù)據(jù)進(jìn)行檢索; 所述第一內(nèi)存檢索子系統(tǒng)包含最近第一時(shí)間閾值內(nèi)更新的索引數(shù)據(jù),用于對最近第一時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索; 所述第二內(nèi)存檢索子系統(tǒng)包含最近第二時(shí)間閾值內(nèi)更新的索引數(shù)據(jù),用于對最近第二時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索;所述第一時(shí)間閾值和第二時(shí)間閾值為預(yù)先設(shè)置,且所述第二時(shí)間閾值小于所述第一時(shí)間閾值。
8.根據(jù)權(quán)利要求7所述的實(shí)時(shí)檢索系統(tǒng),其特征在于,所述第一內(nèi)存檢索子系統(tǒng)包括:第一索引模塊和第一檢索模塊;其中, 第一索引模塊,設(shè)置有多個(gè)索引數(shù)據(jù)庫,用于分庫得到和記錄最近第一時(shí)間閾值內(nèi)更新的索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)同步給所述第一檢索模塊; 第一檢索模塊,用于接收所述第一索引模塊同步的索引數(shù)據(jù),更新內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫,并將相應(yīng)的索引數(shù)據(jù)庫指針切換到更新后的索引數(shù)據(jù)庫上;以及,用于對最近第一時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索。
9.根據(jù)權(quán)利要求7或8所述的實(shí)時(shí)檢索系統(tǒng),其特征在于,所述第一時(shí)間閾值為兩天。
10.根據(jù)權(quán)利要求7所述的實(shí)時(shí)檢索系統(tǒng),其特征在于,所述第二內(nèi)存檢索子系統(tǒng)包括:第二索引模塊和第二檢索模塊;其中, 第二索引模塊,設(shè)置有多個(gè)索引數(shù)據(jù)庫,用于分庫得到和記錄最近第二時(shí)間閾值內(nèi)更新的索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)同步給所述第二檢索模塊; 第二檢索模塊,用于接收所述第二索引模塊同步的索引數(shù)據(jù),更新內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫,并將相應(yīng)的索引數(shù)據(jù)庫指針切換到更新后的索引數(shù)據(jù)庫上;以及,用于對最近第二時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索。
11.根據(jù)權(quán)利要求7、9、或10所述的實(shí)時(shí)檢索系統(tǒng),其特征在于,所述第二時(shí)間閾值不小于十分鐘且小于兩天。
12.—種內(nèi)存檢索方法, 其特征在于,所述內(nèi)存檢索方法包括: 設(shè)置多個(gè)索引數(shù)據(jù)庫,分庫得到和記錄索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)進(jìn)行同I K少; 接收所述同步的索引數(shù)據(jù),更新內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫,并將相應(yīng)的索引數(shù)據(jù)庫指針切換到更新后的索引數(shù)據(jù)庫上。
13.根據(jù)權(quán)利要求12所述的內(nèi)存檢索方法,其特征在于,所述分庫得到和記錄索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)進(jìn)行同步,包括: 對當(dāng)前接收到的原始數(shù)據(jù)進(jìn)行處理,得到索引數(shù)據(jù)并記錄到當(dāng)前索引數(shù)據(jù)庫,將當(dāng)前索引數(shù)據(jù)庫的索引數(shù)據(jù)進(jìn)行同步。
14.根據(jù)權(quán)利要求13所述的內(nèi)存檢索方法,其特征在于,所述分庫得到和記錄索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)進(jìn)行同步,還包括: 所述各索引數(shù)據(jù)庫按照所保存數(shù)據(jù)的更新時(shí)間排序; 在當(dāng)前索引數(shù)據(jù)庫存滿時(shí),將當(dāng)前得到索引數(shù)據(jù)記錄到下一個(gè)索引數(shù)據(jù)庫,并將下一個(gè)索引數(shù)據(jù)庫的索引數(shù)據(jù)進(jìn)行同步;如此往復(fù),在最后一個(gè)索引數(shù)據(jù)庫存滿時(shí),清空第一個(gè)索引數(shù)據(jù)庫,將當(dāng)前得到的索引數(shù)據(jù)記錄到第一個(gè)索引數(shù)據(jù)庫,并將第一個(gè)索引數(shù)據(jù)庫的索引數(shù)據(jù)進(jìn)行同步。
15.根據(jù)權(quán)利要求12至14任一項(xiàng)所述的內(nèi)存檢索方法,其特征在于,所述分庫得到和記錄索引數(shù)據(jù),并分庫將更新的索引數(shù)據(jù)進(jìn)行同步,具體包括:接收原始數(shù)據(jù),生成源數(shù)據(jù)文件;對所述源數(shù)據(jù)文件進(jìn)行處理,得到倒排信息,保存到當(dāng)前索引數(shù)據(jù)庫的倒排庫;將當(dāng)前索引數(shù)據(jù)庫中倒排庫的倒排信息進(jìn)行同步。
16.根據(jù)權(quán)利要求15任一項(xiàng)所述的內(nèi)存檢索方法,其特征在于, 所述各索引數(shù)據(jù)庫包括一個(gè)用于記錄順排信息的順排庫和一個(gè)用于記錄倒排信息的倒排庫; 所述對所述源數(shù)據(jù)文件進(jìn)行處理,得到倒排信息,保存到當(dāng)前索引數(shù)據(jù)庫的倒排庫,包括:對所述源數(shù)據(jù)文件進(jìn)行順排處理,得到順排信息并記錄到當(dāng)前索引數(shù)據(jù)庫的順排庫,再對所述順排信息進(jìn)行倒排處理,得到倒排信息并記錄到當(dāng)前索引數(shù)據(jù)庫的倒排庫。
17.根據(jù)權(quán)利要求15所述的內(nèi)存檢索方法,其特征在于,所述接收所述同步的索引數(shù)據(jù),更新內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫,并將相應(yīng)的索引數(shù)據(jù)庫指針切換到更新后的索引數(shù)據(jù)庫上,包括: 接收所述倒排信息,先將所接收到的倒排信息加載到內(nèi)存的一個(gè)臨時(shí)數(shù)據(jù)庫中,待當(dāng)前索引數(shù)據(jù)庫的倒排庫中所有倒排信息同步完成后,將相應(yīng)的索引數(shù)據(jù)庫指針切換到所述臨時(shí)數(shù)據(jù)庫上,并將所述臨時(shí)數(shù)據(jù)庫作為新的索引數(shù)據(jù)庫替換掉內(nèi)存中相應(yīng)的索引數(shù)據(jù)庫。
18.—種實(shí)時(shí)檢索方法,其特征在于,所述方法由實(shí)時(shí)檢索系統(tǒng)實(shí)現(xiàn),所述實(shí)時(shí)檢索系統(tǒng)包括磁盤檢索子系統(tǒng)、第一內(nèi)存檢索子系統(tǒng)和第二內(nèi)存檢索子系統(tǒng);其中,所述磁盤檢索子系統(tǒng)包含有全部的索引數(shù)據(jù),用于對全部數(shù)據(jù)進(jìn)行檢索;所述第一內(nèi)存檢索子系統(tǒng)包含最近第一時(shí)間閾值內(nèi)更新的索引數(shù)據(jù),用于對最近第一時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索;所述第二內(nèi)存檢索子系統(tǒng)包含最近第二時(shí)間閾值內(nèi)更新的索引數(shù)據(jù),用于對最近第二時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索;所述第一時(shí)間閾值和第二時(shí)間閾值為預(yù)先設(shè)置,且所述第二時(shí)間閾值小于所述第一時(shí)間閾值; 所述方法包括:接收到針 對全部數(shù)據(jù)的檢索請求時(shí),所述磁盤檢索子系統(tǒng)對全部數(shù)據(jù)進(jìn)行檢索; 和/或,接收到針對最近的不大于第一時(shí)間閾值且大于第二時(shí)間閾值的時(shí)間段內(nèi)數(shù)據(jù)的檢索請求時(shí),所述第一內(nèi)存檢索子系統(tǒng)對最近第一時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索; 和/或,接收到針對最近的不大于第二時(shí)間閾值的時(shí)間段內(nèi)數(shù)據(jù)的檢索請求時(shí),所述第二內(nèi)存檢索子系統(tǒng)對最近第二時(shí)間閾值內(nèi)更新的數(shù)據(jù)進(jìn)行檢索。
19.根據(jù)權(quán)利要求18所述的實(shí)時(shí)檢索方法,其特征在于,所述第一時(shí)間閾值為兩天,所述第二時(shí)間閾值小于兩天且不小于十分鐘。
【文檔編號】G06F17/30GK103473229SQ201210184642
【公開日】2013年12月25日 申請日期:2012年6月6日 優(yōu)先權(quán)日:2012年6月6日
【發(fā)明者】王長偉, 汪偉, 蔣宏偉 申請人:深圳市世紀(jì)光速信息技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1