基于Lucene的倒排索引系統(tǒng)構(gòu)建、數(shù)據(jù)處理方法及裝置制造方法
【專利摘要】本申請(qǐng)實(shí)施例公開了一種基于Lucene的倒排索引系統(tǒng)構(gòu)建方法。該方法包括:將海量數(shù)據(jù)記錄的倒排索引寫入至少一個(gè)倒排索引文件;在各倒排索引文件寫入完畢后,將寫入完畢的倒排文件的描述信息寫入與該倒排文件關(guān)聯(lián)的至少一個(gè)描述文件;基于倒排索引文件及倒排索引文件的描述文件構(gòu)建倒排索引系統(tǒng)。本申請(qǐng)實(shí)施例還提供了一種基于Lucene的倒排索引系統(tǒng)構(gòu)建裝置,以及基于倒排索引系統(tǒng)的數(shù)據(jù)處理方法和相應(yīng)的裝置。本申請(qǐng)實(shí)施例能夠提高倒排索引系統(tǒng)構(gòu)建效率和數(shù)據(jù)處理效率。
【專利說明】基于Lucene的倒排索引系統(tǒng)構(gòu)建、數(shù)據(jù)處理方法及裝置
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及信息檢索【技術(shù)領(lǐng)域】,特別涉及一種基于Lucene的倒排索引系統(tǒng)構(gòu)建方法、基于Lucene的倒排索引系統(tǒng)的數(shù)據(jù)處理方法及其相應(yīng)裝置。
【背景技術(shù)】
[0002]Lucene作為用Java程序編寫的高性能的全文檢索工具,提供了完整的查詢引擎,它可方便地嵌入各種實(shí)際應(yīng)用中實(shí)現(xiàn)全文搜索/索引功能。Lucene在實(shí)現(xiàn)檢索過程中采用倒排索引(Inverted index)方式進(jìn)行。倒排索引與通過數(shù)據(jù)記錄的標(biāo)識(shí)檢索該記錄屬性的傳統(tǒng)索引方式不同,它是通過屬性查找數(shù)據(jù)記錄。寫有倒排索引的文件通常稱為倒排文件(Iverted file)。Lucene通過包含倒排文件在內(nèi)的倒排索引系統(tǒng)進(jìn)行檢索的方式極大提高了數(shù)據(jù)檢索效率。
[0003]然而,Lucene構(gòu)建倒排索引系統(tǒng)的現(xiàn)有方式卻效率低下,尤其在面對(duì)海量數(shù)據(jù)記錄時(shí),其時(shí)間消耗較大。Lucene目前構(gòu)建倒排索引系統(tǒng)的方式是:先將數(shù)據(jù)記錄的倒排索引寫入倒排文件,在倒排索引寫完后,返回該倒排文件的文件頭填入該倒排文件大小等描述信息,由于Lucene的一個(gè)重要特點(diǎn)是倒排文件必須“順序?qū)懭搿?,因此,為形成包含描述信息的倒排文件,必須先將倒排文件本身存?chǔ)在本地存儲(chǔ)設(shè)備上,經(jīng)過文件頭填寫操作后,再將多個(gè)倒排文件依次上傳到Lucene上,完成倒排索引系統(tǒng)的構(gòu)建。這種方式需要借助外在存儲(chǔ)設(shè)備,多次進(jìn)行磁盤I/O操作,延長了整個(gè)倒排索引系統(tǒng)的構(gòu)建過程,效率較低。此夕卜,基于上述構(gòu)建倒排索引系統(tǒng)的方法,其數(shù)據(jù)處理速度也受到影響。
【發(fā)明內(nèi)容】
[0004]為解決上述技術(shù)問題,本申請(qǐng)實(shí)施例提供一種基于Lucene的倒排索引系統(tǒng)構(gòu)建方法、基于Lucene的倒排索引系統(tǒng)的數(shù)據(jù)處理方法以及相應(yīng)的裝置,以提高Lucene構(gòu)建倒排索引系統(tǒng)的效率和數(shù)據(jù)處理速度。
[0005]本申請(qǐng)實(shí)施例提供的基于Lucene的倒排索引系統(tǒng)構(gòu)建方法包括:
[0006]將海量數(shù)據(jù)記錄的倒排索引寫入至少一個(gè)倒排文件;
[0007]在倒排文件寫入完畢后,將寫入完畢的倒排文件的描述信息寫入與該倒排文件關(guān)聯(lián)的描述文件;
[0008]基于倒排文件及倒排文件的描述文件構(gòu)建倒排索引系統(tǒng)。
[0009]優(yōu)選地,所述將海量數(shù)據(jù)記錄的倒排索引寫入至少一個(gè)倒排索引文件具體包括:
[0010]將海量數(shù)據(jù)記錄劃分為多個(gè)數(shù)據(jù)分片,將每個(gè)數(shù)據(jù)分片內(nèi)的數(shù)據(jù)記錄的倒排索引寫入至少一個(gè)倒排文件;
[0011]所述基于倒排文件及倒排文件的描述文件構(gòu)建倒排索引系統(tǒng)具體包括:
[0012]選取數(shù)據(jù)記錄的一個(gè)屬性作為函數(shù)自變量,按照預(yù)設(shè)函數(shù)映射關(guān)系求取函數(shù)值;
[0013]將具有相同函數(shù)值的多個(gè)數(shù)據(jù)記錄的倒排文件及倒排文件的描述文件合并為一個(gè)索引片分區(qū);[0014]基于多個(gè)索引片分區(qū)構(gòu)建倒排索引系統(tǒng)。
[0015]本申請(qǐng)實(shí)施例還提供了一種基于Lucene的倒排索引系統(tǒng)的數(shù)據(jù)處理方法,該方法包括:
[0016]接收用戶輸入的檢索關(guān)鍵詞和數(shù)據(jù)處理請(qǐng)求;
[0017]利用Lucene的倒排索引系統(tǒng)根據(jù)檢索關(guān)鍵詞檢索海量數(shù)據(jù)記錄,所述Lucene的倒排索引系統(tǒng)按照上述基于Lucene的倒排索引系統(tǒng)構(gòu)建方法構(gòu)建;
[0018]根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果按照所述數(shù)據(jù)處理請(qǐng)求進(jìn)行相應(yīng)的數(shù)據(jù)處理。
[0019]優(yōu)選地,當(dāng)數(shù)據(jù)處理請(qǐng)求為統(tǒng)計(jì)檢索結(jié)果時(shí),根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果進(jìn)行數(shù)據(jù)處理具體包括:
[0020]根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果進(jìn)行排序,根據(jù)排序后的檢索結(jié)果進(jìn)行數(shù)據(jù)統(tǒng)計(jì)。
[0021]優(yōu)選地,當(dāng)數(shù)據(jù)處理請(qǐng)求為交叉分組檢索結(jié)果時(shí),根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果進(jìn)行數(shù)據(jù)處理具體包括:
[0022]根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值進(jìn)行交叉組合,形成交叉分組檢索約束條件,根據(jù)該檢索約束條件對(duì)檢索結(jié)果進(jìn)行交叉分組。
[0023]優(yōu)選地,當(dāng)數(shù)據(jù)處理請(qǐng)求為去重求和檢索結(jié)果時(shí),根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果進(jìn)行數(shù)據(jù)處理具體包括:
[0024]根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值查找到該值對(duì)應(yīng)的記錄號(hào),根據(jù)該記錄號(hào)取得待處理的數(shù)據(jù)對(duì)象,對(duì)取得的待處理數(shù)據(jù)對(duì)象進(jìn)行求和操作。
[0025]本申請(qǐng)還提供了一種基于Lucene的倒排索引系統(tǒng)構(gòu)建裝置。該裝置包括:第一寫入單元、第二寫入單元和構(gòu)建單元,其中:
[0026]所述第一寫入單元,用于將海量數(shù)據(jù)記錄的倒排索引寫入至少一個(gè)倒排文件;
[0027]所述第二寫入單元,用于在倒排文件寫入完畢后,將寫入完畢的倒排文件的描述信息寫入與該倒排文件關(guān)聯(lián)的描述文件;
[0028]所述構(gòu)建單元,用于基于至少一個(gè)倒排文件及倒排文件的描述文件構(gòu)建倒排索引系統(tǒng)。
[0029]優(yōu)選地,所述第一寫入單元具體包括:劃分子單元、寫入子單元,其中:
[0030]所述劃分子單元,用于將海量數(shù)據(jù)記錄劃分為多個(gè)數(shù)據(jù)分片;
[0031]所述寫入子單元,用于將每個(gè)數(shù)據(jù)分片內(nèi)的數(shù)據(jù)記錄的倒排索引寫入至少一個(gè)倒排文件;
[0032]所述構(gòu)建單元具體包括:計(jì)算子單元、合并子單元和構(gòu)建子單元,其中:
[0033]所述計(jì)算子單元,用于選取數(shù)據(jù)記錄的一個(gè)屬性作為函數(shù)自變量,按照預(yù)設(shè)函數(shù)映射關(guān)系計(jì)算函數(shù)值;
[0034]所述合并子單元,用于將具有相同函數(shù)值的多個(gè)數(shù)據(jù)記錄的倒排文件及倒排文件的描述文件合并為一個(gè)索引片分區(qū);
[0035]所述構(gòu)建子單元,用于基于多個(gè)索引片分區(qū)構(gòu)建倒排索引系統(tǒng)。
[0036]本申請(qǐng)實(shí)施例還提供了一種基于Lucene的倒排索引系統(tǒng)的數(shù)據(jù)處理裝置。該裝置包括:接收單元、檢索單元和處理單元,其中:[0037]所述接收單元,用于接收用戶輸入的檢索關(guān)鍵詞和數(shù)據(jù)處理請(qǐng)求;
[0038]所述檢索單元,用于利用Lucene的倒排索引系統(tǒng)根據(jù)檢索關(guān)鍵詞對(duì)海量數(shù)據(jù)記錄進(jìn)行檢索,所述Lucene的倒排索引系統(tǒng)按照上述基于Lucene的倒排索引系統(tǒng)構(gòu)建方法構(gòu)建;
[0039]所述處理單元,用于根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果按照所述數(shù)據(jù)處理請(qǐng)求進(jìn)行相應(yīng)的數(shù)據(jù)處理。
[0040]優(yōu)選地,當(dāng)接收單元接收的數(shù)據(jù)處理請(qǐng)求為統(tǒng)計(jì)檢索結(jié)果時(shí),所述處理單元包括:排序子單元和統(tǒng)計(jì)子單元,其中:
[0041]所述排序子單元,用于根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果進(jìn)行排序;
[0042]所述統(tǒng)計(jì)子單元,用于根據(jù)排序后的檢索結(jié)果進(jìn)行數(shù)據(jù)統(tǒng)計(jì)。
[0043]優(yōu)選地,當(dāng)數(shù)據(jù)處理請(qǐng)求為交叉分組檢索結(jié)果時(shí),所述處理單元包括:約束條件形成子單元和交叉分組子單元,其中:
[0044]所述約束條件形成子單元,用于根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值進(jìn)行交叉組合,形成交叉分組檢索約束條件;
[0045]所述交叉分組子單元,用于根據(jù)檢索約束條件對(duì)檢索結(jié)果進(jìn)行交叉分組。
[0046]優(yōu)選地,當(dāng)數(shù)據(jù)處理請(qǐng)求為去重求和檢索結(jié)果時(shí),所述處理單元包括:記錄號(hào)查找子單元和數(shù)據(jù)對(duì)象合并子單元,其中:
[0047]所述記錄號(hào)查找子單元,用于根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值查找到該值對(duì)應(yīng)的記錄號(hào);
[0048]所述數(shù)據(jù)對(duì)象合并子單元,用于根據(jù)該記錄號(hào)取得待處理的數(shù)據(jù)對(duì)象,對(duì)取得的待處理數(shù)據(jù)對(duì)象進(jìn)行求和操作。
[0049]本申請(qǐng)實(shí)施例在將海量數(shù)據(jù)記錄的倒排索引寫入倒排文件后,將倒排文件的描述信息寫入描述文件,然后基于倒排文件和倒排文件的描述文件構(gòu)建倒排索引系統(tǒng)。與現(xiàn)有技術(shù)相比,本申請(qǐng)實(shí)施例將倒引文件和倒排文件的描述文件分離為兩個(gè)或多個(gè)獨(dú)立文件,從而避免了在倒排索引文件本身寫完后進(jìn)行文件頭修改操作,適應(yīng)了 Lucene順序?qū)懭胛募奶攸c(diǎn),無需依賴外在存儲(chǔ)設(shè)備進(jìn)行全部倒排文件的Lucene寫入,由此提高了基于Lucene的倒排索引系統(tǒng)的構(gòu)建效率。此外,本申請(qǐng)實(shí)施例基于按照如上方式構(gòu)建的Lucene倒排索引文件系統(tǒng)可實(shí)現(xiàn)海量數(shù)據(jù)記錄的快速數(shù)據(jù)處理。
【專利附圖】
【附圖說明】
[0050]為了更清楚地說明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0051]圖1為實(shí)施例一的基于Lucene的倒排索引系統(tǒng)構(gòu)建方法流程圖;
[0052]圖2 (a)為實(shí)施例二的Lucene存儲(chǔ)的文件列表示意圖;
[0053]圖2(b)為實(shí)施例二的倒排索引系統(tǒng)構(gòu)建方法流程圖;
[0054]圖3為實(shí)施例三的基于倒排索引系統(tǒng)的數(shù)據(jù)處理方法流程圖;[0055]圖4(a)為實(shí)施例四的數(shù)據(jù)請(qǐng)求為統(tǒng)計(jì)檢索結(jié)果的數(shù)據(jù)處理示意圖;
[0056]圖4(b)為實(shí)施例四的數(shù)據(jù)請(qǐng)求為交叉分組的數(shù)據(jù)處理過程示意圖;
[0057]圖4(c)為實(shí)施例四的數(shù)據(jù)請(qǐng)求為去重求和檢索結(jié)果的數(shù)據(jù)處理示意圖;
[0058]圖5(a)為實(shí)施例五的基于Lucene的倒排索引系統(tǒng)構(gòu)建裝置的結(jié)構(gòu)框圖;
[0059]圖5(b)為實(shí)施例五的基于倒排索引系統(tǒng)的數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0060]為了使本【技術(shù)領(lǐng)域】的人員更好地理解本申請(qǐng)中的技術(shù)方案,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。
[0061]實(shí)施例一
[0062]如前所述,倒排索引是以數(shù)據(jù)操作對(duì)象的屬性值為關(guān)鍵詞進(jìn)行檢索,從而獲得與該關(guān)鍵詞關(guān)聯(lián)的記錄,這種方式相比于傳統(tǒng)的逐行(頁)掃描方式獲得目標(biāo)記錄,速度更快。但是,在對(duì)數(shù)據(jù)操作對(duì)象進(jìn)行檢索之前,必須為這些數(shù)據(jù)建立倒排索引系統(tǒng),通常情況下,數(shù)據(jù)量越大構(gòu)建倒排索引系統(tǒng)的時(shí)間越長,當(dāng)面對(duì)的數(shù)據(jù)量急劇膨脹以致達(dá)到海量級(jí)別(比如100億行以上、成百上千列的表格包含的數(shù)據(jù))時(shí),這個(gè)過程耗費(fèi)的時(shí)間甚至無法忍受。Lucene作為這方面的“領(lǐng)跑者”,但在海量數(shù)據(jù)構(gòu)建倒排索引系統(tǒng)方面仍然效率較低。本實(shí)施例針對(duì)目前Lucene構(gòu)建倒排索引系統(tǒng)過程中存在的缺陷,提出了改進(jìn)措施。
[0063]參見圖1,該圖示出了本申請(qǐng)實(shí)施例一的基于Lucene的倒排索引系統(tǒng)構(gòu)建方法的流程圖。本實(shí)施例包括:
[0064]步驟SlOl:將海量數(shù)據(jù)的倒排索引寫入至少一個(gè)倒排文件;
[0065]倒排文件是放置海量數(shù)據(jù)記錄的倒排索引的文件,該文件的大小根據(jù)實(shí)際應(yīng)用需要可進(jìn)行不同的設(shè)置,但不宜過大,過大將導(dǎo)致單個(gè)倒排文件中放入過多用戶數(shù)據(jù),增加訪問難度,也不宜過小,過小將導(dǎo)致倒排文件系統(tǒng)出現(xiàn)臃腫,不便于快速訪問。通常情況下,選擇64KB左右為宜。數(shù)據(jù)量相當(dāng)大的情況,寫入了倒排索引的倒排文件將包含多個(gè)。本實(shí)施例對(duì)海量數(shù)據(jù)記錄的數(shù)據(jù)格式并無特殊的要求,可以是表格型數(shù)據(jù),比如包含大量用戶相關(guān)和產(chǎn)品相關(guān)的企業(yè)統(tǒng)計(jì)表,也可以使文本型數(shù)據(jù),比如大量的網(wǎng)頁文本,還可以是其他類型的數(shù)據(jù)。當(dāng)然,在針對(duì)不同的數(shù)據(jù)類型,進(jìn)行本步驟之前可以采取一些預(yù)處理措施,比如去噪、格式化、篩選等處理,以便加快倒排索引的建立和寫入速度。
[0066]步驟S102:在各倒排文件寫入完畢后,將寫入完畢的倒排文件的描述信息寫入與該倒排文件關(guān)聯(lián)的至少一個(gè)描述文件;
[0067]倒排文件根據(jù)其大小寫完倒排索引后,本實(shí)施例在單獨(dú)設(shè)置的新文件中存放與該倒排文件關(guān)聯(lián)的描述信息,這里的描述信息可以是倒排文件的大小、存放的倒排索引條數(shù)、文件起始或終止地址等信息。實(shí)際應(yīng)用中可以在一個(gè)倒排文件寫完后就進(jìn)行描述信息的寫入,也可以在全部倒排文件均寫入完畢后,進(jìn)行描述信息的寫入。還需要說明的是:本實(shí)施例對(duì)倒排文件與描述文件之間的具體對(duì)應(yīng)關(guān)系不作限定,可以是一個(gè)倒排文件對(duì)應(yīng)各自的描述文件,也可以是多個(gè)倒排文件對(duì)應(yīng)一個(gè)描述文件,在某些特殊情況下,甚至還可以多個(gè)倒排文件對(duì)應(yīng)一個(gè)描述文件。
[0068]步驟103:基于倒排文件及倒排文件的描述文件構(gòu)建倒排索引系統(tǒng);按照上述步驟形成倒排文件及倒排文件的描述文件后,即可基于這些文件構(gòu)建出倒排索引系統(tǒng),并將構(gòu)建的倒排索引系統(tǒng)用于實(shí)現(xiàn)海量數(shù)據(jù)的檢索。構(gòu)建倒排索引系統(tǒng)是對(duì)倒排文件和描述文件進(jìn)行組織、管理的過程。
[0069]本實(shí)施例將海量數(shù)據(jù)的倒排索引寫入倒排文件,并將倒排文件的描述信息寫入描述文件,然后基于倒排文件和倒排文件的描述文件構(gòu)建倒排索引系統(tǒng)。與現(xiàn)有技術(shù)相比,本實(shí)施例將倒排文件和倒排文件的描述文件分離為兩個(gè)或多個(gè)獨(dú)立的文件,從而避免了在倒排文件寫完后進(jìn)行文件頭修改的過程,進(jìn)而必須借助外在的存儲(chǔ)設(shè)備。本實(shí)施例適應(yīng)了Lucene順序?qū)懭胛募奶攸c(diǎn),無需依賴外在存儲(chǔ)設(shè)備進(jìn)行全部倒排文件的Lucene寫入,提高了基于Lucene的倒排索引系統(tǒng)的構(gòu)建效率。
[0070]實(shí)施例二
[0071]為了進(jìn)一步清楚說明本申請(qǐng)的技術(shù)方案,下面以更加細(xì)化的基于Lucene的倒排索引構(gòu)建過程為例(實(shí)施例二)予以闡釋。參見圖2(a),該圖示出了 Lucene底層存儲(chǔ)結(jié)構(gòu)中存儲(chǔ)的文件列表,每一組這樣的文件列表構(gòu)成一個(gè)完整的倒排索引系統(tǒng)。該列表中“.tis”文件即是用于存儲(chǔ)倒排索引的倒排文件。參見圖2(b),該圖示出了本實(shí)施例的倒排索引系統(tǒng)的構(gòu)建方法流程。本實(shí)施例包括:
[0072]步驟S201:啟動(dòng)構(gòu)建索引作業(yè),將海量數(shù)據(jù)記錄劃分為多個(gè)數(shù)據(jù)分片;
[0073]啟動(dòng)構(gòu)建索引系統(tǒng)后,調(diào)用多個(gè)Lucene進(jìn)程,根據(jù)存儲(chǔ)空間的大小將海量數(shù)據(jù)記錄(原始數(shù)據(jù))劃分為多個(gè)數(shù)據(jù)分片,每個(gè)數(shù)據(jù)分片的大小可以相同,也可以不同。比如,在海量數(shù)據(jù)記錄的數(shù)據(jù)量在TB至PB級(jí)別時(shí),可將每個(gè)數(shù)據(jù)分片設(shè)定為1GB。本實(shí)施例中的海量數(shù)據(jù)記錄被劃分為k個(gè)數(shù)據(jù)分片,這些數(shù)據(jù)分片位于Lucene的HDFS系統(tǒng)中。
[0074]步驟S202:將每個(gè)數(shù)據(jù)分片內(nèi)的數(shù)據(jù)記錄的倒排索引寫入至少一個(gè)倒排文件;
[0075]步驟S203:檢測(cè)倒排文件是否寫入完畢,如果是,則執(zhí)行步驟S204 ;如果否,則返回步驟S202 ;
[0076]步驟S204:將寫入完畢的倒排文件的描述信息寫入與該倒排文件關(guān)聯(lián)的描述文件;
[0077]步驟S205:選取數(shù)據(jù)記錄的一個(gè)屬性作為函數(shù)自變量,按照預(yù)設(shè)函數(shù)映射關(guān)系求取函數(shù)值;
[0078]數(shù)據(jù)記錄除具有唯一標(biāo)識(shí)該記錄的標(biāo)識(shí)號(hào)外,還具有多個(gè)屬性。比如,數(shù)據(jù)記錄以表格形式(行列)存儲(chǔ),每行的行號(hào)可作為數(shù)據(jù)記錄的標(biāo)識(shí)號(hào),除行號(hào)外,每條數(shù)據(jù)記錄還包含多個(gè)列,每個(gè)列表征了數(shù)據(jù)記錄的一個(gè)屬性。在選取函數(shù)自變量時(shí)可以選取任何一列的值(屬性值)作為函數(shù)輸入,比如可以是用戶ID號(hào)、產(chǎn)品ID,或者其他的ID。這里進(jìn)行函數(shù)映射的預(yù)設(shè)函數(shù)也可以是多種。為便于說明,本實(shí)施例以求余函數(shù)為例,當(dāng)對(duì)選定的屬性值比如用戶ID進(jìn)行求余運(yùn)算,得到有限個(gè)余數(shù)值(1,2,...η),則每個(gè)數(shù)據(jù)分片被劃分為η組(這個(gè)η的數(shù)量與后續(xù)步驟的索引片分區(qū)的數(shù)量相同,因此,“η”又為稱為索引片分區(qū)的“Key值”)。
[0079]步驟S206:將具有相同函數(shù)值的多個(gè)數(shù)據(jù)記錄的倒排文件及倒排文件的描述文件合并為一個(gè)索引片分區(qū);[0080]將具有相同函數(shù)值的多個(gè)數(shù)據(jù)記錄的倒排文件及描述文件進(jìn)行合并的步驟,在實(shí)際應(yīng)用過程中包含兩個(gè)子步驟:一是數(shù)據(jù)分片內(nèi)的合并;二是數(shù)據(jù)分片間的合并。對(duì)于數(shù)據(jù)分片內(nèi)的合并:由于每個(gè)數(shù)據(jù)分片內(nèi)的數(shù)據(jù)記錄已根據(jù)求余函數(shù)的η個(gè)余數(shù)值(Key值)劃分為η組,并建立了每個(gè)數(shù)據(jù)記錄的倒排索引和描述文件,因此,可以將余數(shù)值相同的數(shù)據(jù)記錄對(duì)應(yīng)的倒排索引及其描述文件進(jìn)行合并,合并后的倒排索引文件稱為一個(gè)“小索弓I ”,這樣,每個(gè)數(shù)據(jù)分區(qū)包含η個(gè)小索引,整個(gè)海量數(shù)據(jù)記錄共有k*n個(gè)小索引。對(duì)于數(shù)據(jù)分片間的合并:經(jīng)過前述數(shù)據(jù)分片內(nèi)的索引合并,已減少了索引文件的數(shù)量,但是,為對(duì)索引系統(tǒng)進(jìn)一步“壓縮”,有必要對(duì)位于不同數(shù)據(jù)分片之內(nèi)但具有相同余數(shù)值(Key值)“小索弓I”再進(jìn)行合并,即將具有相同Key值的多個(gè)小索引合并為一個(gè)索引片分區(qū)(“大索引”)。然后將這些“大索引”順序?qū)懭隠ucene的HDFS文件系統(tǒng)中。在Lucene系統(tǒng)中,前述數(shù)據(jù)分片內(nèi)的索引合并過程體現(xiàn)為Map過程,數(shù)據(jù)分片間的索引合并過程體現(xiàn)為Reduce過程。此夕卜,為了方便對(duì)“小索引”的合并,在實(shí)際應(yīng)用過程中還可以通過suffle過程將Hadoop中k*n個(gè)小索引文件按照key排序后進(jìn)行合并操作。
[0081]步驟S207:基于多個(gè)索引片分區(qū)構(gòu)建倒排索引系統(tǒng);
[0082]按照前述方式構(gòu)建出多個(gè)“大索引”,基于這些大索引構(gòu)建倒排索引系統(tǒng),進(jìn)而依據(jù)倒排索弓I系統(tǒng)進(jìn)行海量數(shù)據(jù)的檢索。
[0083]本實(shí)施例通過修改Lucene底層索引存儲(chǔ)結(jié)構(gòu),使得倒排文件可以順序?qū)懭際DFS中,而無需如現(xiàn)有技術(shù)那樣先寫在本地磁盤,然后上傳到HDFS,從而同樣能夠取得前述實(shí)施例的技術(shù)效果:提高到排索引系統(tǒng)構(gòu)建的效率。此外,本實(shí)施例在建立索引系統(tǒng)的中間環(huán)節(jié),采用Map-Reduce作業(yè)進(jìn)一步優(yōu)化索弓I系統(tǒng)構(gòu)建過程,減少了磁盤開銷,從而相對(duì)于現(xiàn)有技術(shù)而目,進(jìn)一步提聞了基于Lucene的倒排索引系統(tǒng)的構(gòu)建效率。為了定量說明本實(shí)施例與現(xiàn)有技術(shù)的技術(shù)效果上的差異, 申請(qǐng)人:在相同數(shù)據(jù)量、相同配置的數(shù)據(jù)處理能力的系統(tǒng)中進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明:現(xiàn)有技術(shù)需要12個(gè)小時(shí)完成的倒排索引系統(tǒng)構(gòu)建過程可縮短到1.5小時(shí)內(nèi),效率提高了 87.5%。
[0084]實(shí)施例三
[0085]按照前述實(shí)施例構(gòu)建出基于Lucene的倒排索引系統(tǒng)后,可在該倒排索引系統(tǒng)基礎(chǔ)上進(jìn)行一系列數(shù)據(jù)處理操作,從而構(gòu)成本申請(qǐng)的第三實(shí)施例。參見圖3,該圖示出了本實(shí)施例的方法流程。本實(shí)施例包括:
[0086]步驟S301:接收用戶輸入的檢索關(guān)鍵詞和數(shù)據(jù)處理請(qǐng)求;
[0087]基于實(shí)際工作需要,用戶需要從海量數(shù)據(jù)中檢索出需要的數(shù)據(jù),并對(duì)這些數(shù)據(jù)進(jìn)行處理操作,比如通過對(duì)用戶相關(guān)和產(chǎn)品相關(guān)的數(shù)據(jù)庫進(jìn)行檢索,獲取分析用戶消費(fèi)分群、用戶流失原因的相關(guān)數(shù)據(jù),網(wǎng)站運(yùn)營人員或商務(wù)智能分析師從海量數(shù)據(jù)中檢索出有價(jià)值的信息。完成檢索必須獲得檢索關(guān)鍵詞。此外,如果需要在檢索基礎(chǔ)上進(jìn)行必要的數(shù)據(jù)處理,比如檢索結(jié)果統(tǒng)計(jì)、交叉分組、去重處理等,還需要接收數(shù)據(jù)處理請(qǐng)求。
[0088]步驟S302:利用Lucene倒排索引系統(tǒng)根據(jù)檢索關(guān)鍵詞檢索海量數(shù)據(jù)記錄,所述Lucene的倒排索引系統(tǒng)按照上述基于Lucene的倒排索引系統(tǒng)構(gòu)建方法構(gòu)建;
[0089]獲得關(guān)鍵詞后即可利用前述實(shí)施例構(gòu)建的倒排索引系統(tǒng)進(jìn)行海量數(shù)據(jù)的檢索。由于此處接收的“關(guān)鍵詞”是建立倒排索引系統(tǒng)過程中采用的關(guān)鍵詞,通過該關(guān)鍵詞即能夠迅速地查找到以該關(guān)鍵詞為屬性值的記錄,從截取需要的數(shù)據(jù)。[0090]步驟S302:根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果按照數(shù)據(jù)處理請(qǐng)求進(jìn)行相應(yīng)的數(shù)據(jù)處理。
[0091]本實(shí)施例基于Lucene的倒排索引系統(tǒng),根據(jù)關(guān)鍵詞和數(shù)據(jù)處理請(qǐng)求進(jìn)行相應(yīng)的數(shù)據(jù)處理。由于本實(shí)施例的數(shù)據(jù)處理過程采用了“特定”的倒排索引系統(tǒng),相對(duì)于其他數(shù)據(jù)處理過程,比如不能支持海量數(shù)據(jù)快速檢索的典型數(shù)據(jù)庫集群(Oracle RAC)、采用順序掃描方式的典型NOSQL集群等,其數(shù)據(jù)處理過程的效率得到提高。根據(jù)定量試驗(yàn)顯示,典型數(shù)據(jù)庫集群、典型NOSQL集群的數(shù)據(jù)處理時(shí)間通常以分鐘甚至小時(shí)計(jì),而本實(shí)施例在用戶提交數(shù)據(jù)處理請(qǐng)求后在數(shù)秒內(nèi)(I?IOs)即可得到結(jié)果,比前述兩種方式快100倍以上。此夕卜,本實(shí)施例還具有高并發(fā)負(fù)載和低成本(在相同的數(shù)據(jù)量和數(shù)據(jù)處理能力前提下,相對(duì)其他方案采用的服務(wù)器最少)的優(yōu)勢(shì)。
[0092]實(shí)施例四
[0093]實(shí)施例三敘述了本申請(qǐng)基于Lucene倒排索引系統(tǒng)的數(shù)據(jù)處理過程,為了更清楚地說明該技術(shù)方案,下面分別以三種具體的數(shù)據(jù)處理過程予以闡釋。
[0094]參見圖4(a),該圖示出了數(shù)據(jù)請(qǐng)求為統(tǒng)計(jì)檢索結(jié)果時(shí)的數(shù)據(jù)處理過程。當(dāng)數(shù)據(jù)處理請(qǐng)求為統(tǒng)計(jì)檢索結(jié)果時(shí),根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果進(jìn)行數(shù)據(jù)處理包括:根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果進(jìn)行排序,根據(jù)排序后的檢索結(jié)果進(jìn)行數(shù)據(jù)統(tǒng)計(jì)處理。圖中左側(cè)為檢索結(jié)果未排序的情況,中間為基于Lucene倒排索引系統(tǒng)利用Lucene的檢索排序程序(sort)的過程,右側(cè)為經(jīng)過排序后的檢索結(jié)果集。由于可以從已經(jīng)建好的倒排索引系統(tǒng)中直接取值,并依據(jù)該值進(jìn)行排序,排序過程可以與查詢過程同時(shí)進(jìn)行,從而比順序掃描的方式進(jìn)行統(tǒng)計(jì)操作速度快幾個(gè)數(shù)量級(jí),當(dāng)進(jìn)行統(tǒng)計(jì)操作的數(shù)據(jù)對(duì)象越多,優(yōu)勢(shì)體現(xiàn)越明顯。本實(shí)施例中統(tǒng)計(jì)操作可以具體為求和(SUM)、求最大(小)值(MAX/MIN)、計(jì)數(shù)(COUNT)、平均值(AVERAGE)等。
[0095]參見圖4(b),該圖示出了數(shù)據(jù)處理請(qǐng)求為交叉分組檢索結(jié)果時(shí)的數(shù)據(jù)處理過程。當(dāng)數(shù)據(jù)處理請(qǐng)求為交叉分組檢索結(jié)果時(shí),根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果進(jìn)行數(shù)據(jù)處理包括:根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值進(jìn)行兩兩交叉組合,形成新的交叉分組檢索約束條件,根據(jù)該檢索約束條件對(duì)檢索結(jié)果進(jìn)行交叉分組。圖中上端為倒排索引系統(tǒng)中的兩列數(shù)據(jù)(A列、B列),該兩列數(shù)據(jù)的具體值可通過Lucene的facet方法取得;中間是通過兩列數(shù)據(jù)構(gòu)造的約束條件表格;下端是根據(jù)表格獲得的查詢語句。本實(shí)施例的交叉分組方法,由于在建立倒排索引系統(tǒng)過程中已經(jīng)預(yù)先知道每個(gè)列數(shù)據(jù)的具體值,因此,可加快約束條件表格的構(gòu)建,從而提高交叉分組的效率。
[0096]參見圖4(c),該圖示出了數(shù)據(jù)處理請(qǐng)求為去重求和檢索結(jié)果時(shí)的數(shù)據(jù)處理過程。當(dāng)數(shù)據(jù)處理請(qǐng)求為去重求和檢索結(jié)果時(shí),根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果進(jìn)行數(shù)據(jù)處理包括:根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值查找到對(duì)應(yīng)的記錄號(hào),根據(jù)該記錄號(hào)取得待處理的另一列待求和數(shù)據(jù)對(duì)象,對(duì)取得的待處理數(shù)據(jù)對(duì)象進(jìn)行合并操作。圖中上端是倒排索引系統(tǒng)中的一列已經(jīng)預(yù)先在建索引階段進(jìn)行了分組、去重的數(shù)據(jù)(A列),該列數(shù)據(jù)的具體值可通過Lucene的facet方法取得,中間是根據(jù)文檔ID取得的另一列需要求和處理的數(shù)據(jù)(B列),這些數(shù)據(jù)經(jīng)過圖中下端的求和(function)功能處理后,得到去重且對(duì)另一列進(jìn)行求和的返回結(jié)果。本實(shí)施例的去重求和處理方法,由于在建立倒排索引系統(tǒng)過程中已經(jīng)預(yù)先知道每個(gè)列數(shù)據(jù)的具體值,因此,能夠快速地去掉一些具有重復(fù)且重復(fù)率低的檢索結(jié)果,從而提高求和效率。
[0097]實(shí)施例五
[0098]以上是對(duì)本申請(qǐng)方法實(shí)施例的描述,本申請(qǐng)還提供了基于Lucene的倒排索引系統(tǒng)構(gòu)建裝置和基于Lucene的倒排索引系統(tǒng)的數(shù)據(jù)處理裝置實(shí)施例。參見附圖5(a),該圖示出了基于Lucene的倒排索引系統(tǒng)構(gòu)建裝置的結(jié)構(gòu)。本裝置實(shí)施例包括:第一寫入單元501、第二寫入單元502和構(gòu)建單元503,其中:
[0099]第一寫入單元501,用于將海量數(shù)據(jù)記錄的倒排索引順序?qū)懭胫辽僖粋€(gè)倒排文件;
[0100]第二寫入單元502,用于在各倒排文件寫入完畢后,將寫入完畢的倒排文件的描述信息寫入與該倒排文件關(guān)聯(lián)的至少一個(gè)描述文件;
[0101]構(gòu)建單元503,用于基于倒排文件及倒排文件的描述文件構(gòu)建倒排索引系統(tǒng)。
[0102]本倒排索引系統(tǒng)構(gòu)建裝置的工作過程是:第一寫入單元501將海量數(shù)據(jù)記錄的倒排索引順序?qū)懭胫辽僖粋€(gè)倒排文件,由第二寫入單元502在各倒排文件寫入完畢后,將寫入完畢的倒排文件的描述信息寫入與該倒排文件關(guān)聯(lián)的至少一個(gè)描述文件,最后構(gòu)建單元503基于倒排文件及倒排文件的描述文件構(gòu)建倒排索引系統(tǒng)。
[0103]本倒排索引系統(tǒng)構(gòu)建裝置實(shí)施例將海量數(shù)據(jù)的倒排索引寫入倒排文件,并將倒排文件的描述信息寫入描述文件,然后基于倒排文件和倒排文件的描述文件構(gòu)建倒排索引系統(tǒng)。與現(xiàn)有技術(shù)相比,本構(gòu)建裝置實(shí)施例將倒排文件和倒排文件的描述文件分離為兩個(gè)或多個(gè)獨(dú)立的文件,從而避免了在倒排文件寫完后進(jìn)行文件頭修改的過程,進(jìn)而必須借助外在的存儲(chǔ)設(shè)備。本構(gòu)建裝置實(shí)施例適應(yīng)了 Lucene順序?qū)懭胛募奶攸c(diǎn),無需依賴外在存儲(chǔ)設(shè)備進(jìn)行全部倒排文件的Lucene寫入,提高了基于Lucene的倒排索引系統(tǒng)的構(gòu)建效率。
[0104]在上述的構(gòu)建裝置中,第一寫入單元根據(jù)不同的實(shí)際情況可以有不同的具體結(jié)構(gòu)。比如,第一寫入單元501可以包括:劃分子單元5011、寫入子單元5012,其中:劃分子單元5011,用于將海量數(shù)據(jù)記錄劃分為多個(gè)數(shù)據(jù)分片,寫入子單元5012,用于將每個(gè)數(shù)據(jù)分片內(nèi)的數(shù)據(jù)記錄的倒排索引寫入至少一個(gè)倒排文件。與第一寫入單元的結(jié)構(gòu)相適應(yīng)地,構(gòu)建單元503具體可以包括:計(jì)算子單元5031、合并子單元5032和構(gòu)建子單元5033,其中:計(jì)算子單元5031,用于選取數(shù)據(jù)記錄的一個(gè)屬性作為函數(shù)自變量,按照預(yù)設(shè)函數(shù)映射關(guān)系計(jì)算函數(shù)值;合并子單元5032,用于將具有相同函數(shù)值的多個(gè)數(shù)據(jù)記錄的倒排文件及倒排文件的描述文件合并為一個(gè)索引片分區(qū);構(gòu)建子單元5033,用于基于多個(gè)索引片分區(qū)構(gòu)建倒排索引系統(tǒng)。
[0105]基于上述倒排索引系統(tǒng)的構(gòu)建裝置,還可以進(jìn)行數(shù)據(jù)處理。參見圖5(b),該圖示出了基于Lucene的倒排索引系統(tǒng)的數(shù)據(jù)處理裝置,該裝置接收單元601、檢索單元602和處理單元603,其中:
[0106]接收單元601,用于接收用戶輸入的檢索關(guān)鍵詞和數(shù)據(jù)處理請(qǐng)求;
[0107]檢索單元602,用于利用Lucene倒排索引系統(tǒng)根據(jù)檢索關(guān)鍵詞對(duì)海量數(shù)據(jù)進(jìn)行檢索,所述Lucene倒排索引系統(tǒng)按照上述基于Lucene的倒排索引系統(tǒng)構(gòu)建方法構(gòu)建;
[0108]處理單元603,用于根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果按照數(shù)據(jù)處理請(qǐng)求進(jìn)行相應(yīng)的數(shù)據(jù)處理。
[0109]本數(shù)據(jù)處理裝置的工作過程是:接收單元601接收用戶輸入的檢索關(guān)鍵詞和數(shù)據(jù)處理請(qǐng)求后,由檢索單元602利用Lucene倒排索引系統(tǒng)根據(jù)檢索關(guān)鍵詞對(duì)海量數(shù)據(jù)進(jìn)行檢索,然后處理單元603根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果按照數(shù)據(jù)處理請(qǐng)求進(jìn)行相應(yīng)的數(shù)據(jù)處理。
[0110]本數(shù)據(jù)處理裝置由于采用了特定的倒排文件系統(tǒng),能夠極大地提高數(shù)據(jù)處理速率。此外,本數(shù)據(jù)處理裝置基于不同的數(shù)據(jù)處理類型還可以具有更多的具體結(jié)果。比如,當(dāng)接收單元接收的數(shù)據(jù)處理請(qǐng)求為統(tǒng)計(jì)檢索結(jié)果時(shí),所述處理單元包括:排序子單元和統(tǒng)計(jì)子單元,其中:所述排序子單元,用于根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果進(jìn)行排序;所述統(tǒng)計(jì)子單元,用于根據(jù)排序后的檢索結(jié)果進(jìn)行數(shù)據(jù)統(tǒng)計(jì)處理。當(dāng)數(shù)據(jù)處理請(qǐng)求為交叉分組檢索結(jié)果時(shí),所述處理單元包括:約束條件形成子單元和交叉分組子單元,其中:所述約束條件形成子單元,用于根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值進(jìn)行兩兩交叉組合,形成新的交叉分組檢索約束條件;所述交叉分組子單元,用于根據(jù)檢索約束條件對(duì)檢索結(jié)果進(jìn)行交叉分組。當(dāng)數(shù)據(jù)處理請(qǐng)求為去重檢索結(jié)果時(shí),所述處理單元包括:記錄號(hào)查找子單元和數(shù)據(jù)對(duì)象合并子單元,其中:所述記錄號(hào)查找子單元,用于根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值查找到對(duì)應(yīng)的記錄號(hào);所述數(shù)據(jù)對(duì)象合并子單元,用于根據(jù)該記錄號(hào)取得待處理的數(shù)據(jù)對(duì)象,對(duì)取得的待處理數(shù)據(jù)對(duì)象進(jìn)行合并操作。
[0111]為了描述的方便,描述以上裝置時(shí)以功能分為各種單元分別描述。當(dāng)然,在實(shí)施本申請(qǐng)時(shí)可以把各單元的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。
[0112]通過以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請(qǐng)可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn)。基于這樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
[0113]本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述得比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。以上所描述的系統(tǒng)實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。
[0114]本申請(qǐng)可用于眾多通用或?qū)S玫挠?jì)算系統(tǒng)環(huán)境或配置中。例如:個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、置頂盒、可編程的消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。
[0115]本申請(qǐng)可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
[0116]以上所述僅是本申請(qǐng)的【具體實(shí)施方式】,應(yīng)當(dāng)指出,對(duì)于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來說,在不脫離本申請(qǐng)?jiān)淼那疤嵯?,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本申請(qǐng)的保護(hù)范圍。
【權(quán)利要求】
1.一種基于Lucene的倒排索引系統(tǒng)構(gòu)建方法,其特征在于,該方法包括: 將海量數(shù)據(jù)記錄的倒排索引寫入至少一個(gè)倒排文件; 在倒排文件寫入完畢后,將寫入完畢的倒排文件的描述信息寫入與該倒排文件關(guān)聯(lián)的至少一個(gè)描述文件; 基于倒排文件及倒排文件的描述文件構(gòu)建倒排索引系統(tǒng)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述將海量數(shù)據(jù)記錄的倒排索引寫入至少一個(gè)倒排索引文件具體包括: 將海量數(shù)據(jù)記錄劃分為多個(gè)數(shù)據(jù)分片,將每個(gè)數(shù)據(jù)分片內(nèi)的數(shù)據(jù)記錄的倒排索引寫入至少一個(gè)倒排文件; 所述基于倒排文件及倒排文件的描述文件構(gòu)建倒排索引系統(tǒng)具體包括: 選取數(shù)據(jù)記錄的一個(gè)屬性作為函數(shù)自變量,按照預(yù)設(shè)函數(shù)映射關(guān)系求取函數(shù)值;將具有相同函數(shù)值的多個(gè)數(shù)據(jù)記錄的倒排文件及倒排文件的描述文件合并為一個(gè)索引片分區(qū); 基于多個(gè)索引片分區(qū)構(gòu)建倒排索引系統(tǒng)。
3.一種基于Lucene的倒排索引系統(tǒng)的數(shù)據(jù)處理方法,其特征在于,該方法包括: 接收用戶輸入的檢索關(guān)鍵詞和數(shù)據(jù)處理請(qǐng)求; 利用Lucene的倒排索引系統(tǒng)根據(jù)檢索關(guān)鍵詞檢索海量數(shù)據(jù)記錄,所述Lucene的倒排索引系統(tǒng)按照上述權(quán)利要求1或2所述的方法構(gòu)建; 根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果按照所述數(shù)據(jù)處理請(qǐng)求進(jìn)行相應(yīng)的數(shù)據(jù)處理。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,當(dāng)數(shù)據(jù)處理請(qǐng)求為統(tǒng)計(jì)檢索結(jié)果時(shí),根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果進(jìn)行數(shù)據(jù)處理具體包括: 根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果進(jìn)行排序,根據(jù)排序后的檢索結(jié)果進(jìn)行數(shù)據(jù)統(tǒng)計(jì)。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,當(dāng)數(shù)據(jù)處理請(qǐng)求為交叉分組檢索結(jié)果時(shí),根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果進(jìn)行數(shù)據(jù)處理具體包括: 根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值進(jìn)行交叉組合,形成交叉分組檢索約束條件,根據(jù)該檢索約束條件對(duì)檢索結(jié)果進(jìn)行交叉分組。
6.根據(jù)權(quán)利要求3所述的方法,其特征在于,當(dāng)數(shù)據(jù)處理請(qǐng)求為去重求和檢索結(jié)果時(shí),根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果進(jìn)行數(shù)據(jù)處理具體包括: 根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值查找到該值對(duì)應(yīng)的記錄號(hào),根據(jù)該記錄號(hào)取得待處理的數(shù)據(jù)對(duì)象,對(duì)取得的待處理數(shù)據(jù)對(duì)象進(jìn)行求和操作。
7.一種基于Lucene的倒排索引系統(tǒng)構(gòu)建裝置,其特征在于,該裝置包括:第一寫入單元、第二寫入單元和構(gòu)建單元,其中: 所述第一寫入單元,用于將海量數(shù)據(jù)記錄的倒排索引寫入至少一個(gè)倒排文件; 所述第二寫入單元,用于在倒排文件寫入完畢后,將寫入完畢的倒排文件的描述信息寫入與該倒排文件關(guān)聯(lián)的至少一個(gè)描述文件; 所述構(gòu)建單元,用于基于倒排文件及倒排文件的描述文件構(gòu)建倒排索引系統(tǒng)。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述第一寫入單元具體包括:劃分子單元、寫入子單元,其中: 所述劃分子單元,用于將海量數(shù)據(jù)記錄劃分為多個(gè)數(shù)據(jù)分片; 所述寫入子單元,用于將每個(gè)數(shù)據(jù)分片內(nèi)的數(shù)據(jù)記錄的倒排索引寫入至少一個(gè)倒排文件; 所述構(gòu)建單元具體包括:計(jì)算子單元、合并子單元和構(gòu)建子單元,其中: 所述計(jì)算子單元,用于選取數(shù)據(jù)記錄的一個(gè)屬性作為函數(shù)自變量,按照預(yù)設(shè)函數(shù)映射關(guān)系計(jì)算函數(shù)值; 所述合并子單元,用于將具有相同函數(shù)值的多個(gè)數(shù)據(jù)記錄的倒排文件及倒排文件的描述文件合并為一個(gè)索引片分區(qū); 所述構(gòu)建子單元,用于基于多個(gè)索引片分區(qū)構(gòu)建倒排索引系統(tǒng)。
9.一種基于Lucene的倒排索引系統(tǒng)的數(shù)據(jù)處理裝置,其特征在于,該裝置包括:接收單元、檢索單元和處理單元,其中: 所述接收單元,用于接收用戶輸入的檢索關(guān)鍵詞和數(shù)據(jù)處理請(qǐng)求; 所述檢索單元,用于利用Lucene的倒排索引系統(tǒng)根據(jù)檢索關(guān)鍵詞對(duì)海量數(shù)據(jù)記錄進(jìn)行檢索,所述Lucene的倒排索引系統(tǒng)按照上述權(quán)利要求1或2所述的方法構(gòu)建; 所述處理單元,用于根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果按照所述數(shù)據(jù)處理請(qǐng)求進(jìn)行相應(yīng)的數(shù)據(jù)處理。
10. 根據(jù)權(quán)利要求9所述的裝置,其特征在于, 當(dāng)接收單元接收的數(shù)據(jù)處理請(qǐng)求為統(tǒng)計(jì)檢索結(jié)果時(shí),所述處理單元包括:排序子單元和統(tǒng)計(jì)子單元,其中: 所述排序子單元,用于根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值對(duì)檢索結(jié)果進(jìn)行排序; 所述統(tǒng)計(jì)子單元,用于根據(jù)排序后的檢索結(jié)果進(jìn)行數(shù)據(jù)統(tǒng)計(jì); 當(dāng)數(shù)據(jù)處理請(qǐng)求為交叉分組檢索結(jié)果時(shí),所述處理單元包括:約束條件形成子單元和交叉分組子單元,其中: 所述約束條件形成子單元,用于根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值進(jìn)行交叉組合,形成交叉分組檢索約束條件; 所述交叉分組子單元,用于根據(jù)檢索約束條件對(duì)檢索結(jié)果進(jìn)行交叉分組; 當(dāng)數(shù)據(jù)處理請(qǐng)求為去重求和檢索結(jié)果時(shí),所述處理單元包括:記錄號(hào)查找子單元和數(shù)據(jù)對(duì)象求和子單元,其中: 所述記錄號(hào)查找子單元,用于根據(jù)檢索關(guān)鍵詞在倒排索引系統(tǒng)中的值查找到該值對(duì)應(yīng)的記錄號(hào); 所述數(shù)據(jù)對(duì)象求和子單元,用于根據(jù)該記錄號(hào)取得待處理的數(shù)據(jù)對(duì)象,對(duì)取得的待處理數(shù)據(jù)對(duì)象進(jìn)行求和操作。
【文檔編號(hào)】G06F17/30GK103714096SQ201210380761
【公開日】2014年4月9日 申請(qǐng)日期:2012年10月9日 優(yōu)先權(quán)日:2012年10月9日
【發(fā)明者】秦劍 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司