TW201415262A - 基於Lucene的倒排索引系統構建、資料處理方法及裝置 - Google Patents
基於Lucene的倒排索引系統構建、資料處理方法及裝置 Download PDFInfo
- Publication number
- TW201415262A TW201415262A TW102111884A TW102111884A TW201415262A TW 201415262 A TW201415262 A TW 201415262A TW 102111884 A TW102111884 A TW 102111884A TW 102111884 A TW102111884 A TW 102111884A TW 201415262 A TW201415262 A TW 201415262A
- Authority
- TW
- Taiwan
- Prior art keywords
- inverted
- file
- data
- inverted index
- index system
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/319—Inverted lists
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申請案實施例揭示了一種基於Lucene的倒排索引系統構建方法。該方法包括:將海量資料記錄的倒排索引寫入至少一個倒排索引檔案;在各倒排索引檔案寫入完畢後,將寫入完畢的倒排檔案的描述資訊寫入與該倒排檔案關聯的至少一個描述檔案;基於倒排索引檔案及倒排索引檔案的描述檔案構建倒排索引系統。本申請案實施例還提供了一種基於Lucene的倒排索引系統構建裝置,以及基於倒排索引系統的資料處理方法和相應的裝置。本申請案實施例能夠提高倒排索引系統構建效率和資料處理效率。
Description
本申請案關於資訊檢索技術領域,特別關於一種基於Lucene的倒排索引系統構建方法、基於Lucene的倒排索引系統的資料處理方法及其相應裝置。
Lucene作為用Java程式編寫的高性能的全文檢索工具,提供了完整的查詢引擎,它可方便地嵌入各種實際應用中實現全文搜索/索引功能。Lucene在實現檢索過程中採用倒排索引(Inverted index)方式進行。倒排索引與透過資料記錄的標識檢索該記錄屬性的傳統索引方式不同,它是透過屬性查找資料記錄。寫有倒排索引的檔案通常稱為倒排檔案(Iverted file)。Lucene透過包含倒排檔案在內的倒排索引系統進行檢索的方式極大提高了資料檢索效率。
然而,Lucene構建倒排索引系統的現有方式卻效率低下,尤其在面對海量資料記錄時,其時間消耗較大。Lucene目前構建倒排索引系統的方式是:先將資料記錄的倒排索引寫入倒排檔案,在倒排索引寫完後,返回該倒排檔案的檔案頭填入該倒排檔案大小等描述資訊,由於
Lucene的一個重要特點是倒排檔案必須“順序寫入”,因此,為形成包含描述資訊的倒排檔案,必須先將倒排檔案本身儲存在本地儲存設備上,經過檔案頭填寫操作後,再將多個倒排檔案依次上傳到Lucene上,完成倒排索引系統的構建。這種方式需要借助外在儲存設備,多次進行磁片I/O操作,延長了整個倒排索引系統的構建過程,效率較低。此外,基於上述構建倒排索引系統的方法,其資料處理速度也受到影響。
為解決上述技術問題,本申請案實施例提供一種基於Lucene的倒排索引系統構建方法、基於Lucene的倒排索引系統的資料處理方法以及相應的裝置,以提高Lucene構建倒排索引系統的效率和資料處理速度。
本申請案實施例提供的基於Lucene的倒排索引系統構建方法包括:將海量資料記錄的倒排索引寫入至少一個倒排檔案;在倒排檔案寫入完畢後,將寫入完畢的倒排檔案的描述資訊寫入與該倒排檔案關聯的描述檔案;基於倒排檔案及倒排檔案的描述檔案構建倒排索引系統。
較佳地,該將海量資料記錄的倒排索引寫入至少一個倒排索引檔案具體包括:將海量資料記錄劃分為多個資料分片,將每個資料分
片內的資料記錄的倒排索引寫入至少一個倒排檔案;該基於倒排檔案及倒排檔案的描述檔案構建倒排索引系統具體包括:選取資料記錄的一個屬性作為函數引數,按照預設函數映射關係求取函數值;將具有相同函數值的多個資料記錄的倒排檔案及倒排檔案的描述檔案合併為一個索引片分區;基於多個索引片分區構建倒排索引系統。
本申請案實施例還提供了一種基於Lucene的倒排索引系統的資料處理方法,該方法包括:接收用戶輸入的檢索關鍵字和資料處理請求;利用Lucene的倒排索引系統根據檢索關鍵字檢索海量資料記錄,該Lucene的倒排索引系統按照上述基於Lucene的倒排索引系統構建方法構建;根據檢索關鍵字在倒排索引系統中的值對檢索結果按照該資料處理請求進行相應的資料處理。
較佳地,當資料處理請求為統計檢索結果時,根據檢索關鍵字在倒排索引系統中的值對檢索結果進行資料處理具體包括:根據檢索關鍵字在倒排索引系統中的值對檢索結果進行排序,根據排序後的檢索結果進行資料統計。
較佳地,當資料處理請求為交叉分組檢索結果時,根據檢索關鍵字在倒排索引系統中的值對檢索結果進行資料處理具體包括:
根據檢索關鍵字在倒排索引系統中的值進行交叉組合,形成交叉分組檢索約束條件,根據該檢索約束條件對檢索結果進行交叉分組。
較佳地,當資料處理請求為去重求和檢索結果時,根據檢索關鍵字在倒排索引系統中的值對檢索結果進行資料處理具體包括:根據檢索關鍵字在倒排索引系統中的值查找到該值對應的記錄號,根據該記錄號取得待處理的資料物件,對取得的待處理資料物件進行求和操作。
本申請案還提供了一種基於Lucene的倒排索引系統構建裝置。該裝置包括:第一寫入單元、第二寫入單元和構建單元,其中:該第一寫入單元,用於將海量資料記錄的倒排索引寫入至少一個倒排檔案;該第二寫入單元,用於在倒排檔案寫入完畢後,將寫入完畢的倒排檔案的描述資訊寫入與該倒排檔案關聯的描述檔案;該構建單元,用於基於至少一個倒排檔案及倒排檔案的描述檔案構建倒排索引系統。
較佳地,該第一寫入單元具體包括:劃分子單元、寫入子單元,其中:該劃分子單元,用於將海量資料記錄劃分為多個資料分片;該寫入子單元,用於將每個資料分片內的資料記錄的
倒排索引寫入至少一個倒排檔案;該構建單元具體包括:計算子單元、合併子單元和構建子單元,其中:該計算子單元,用於選取資料記錄的一個屬性作為函數引數,按照預設函數映射關係計算函數值;該合併子單元,用於將具有相同函數值的多個資料記錄的倒排檔案及倒排檔案的描述檔案合併為一個索引片分區;該構建子單元,用於基於多個索引片分區構建倒排索引系統。
本申請案實施例還提供了一種基於Lucene的倒排索引系統的資料處理裝置。該裝置包括:接收單元、檢索單元和處理單元,其中:該接收單元,用於接收用戶輸入的檢索關鍵字和資料處理請求;該檢索單元,用於利用Lucene的倒排索引系統根據檢索關鍵字對海量資料記錄進行檢索,該Lucene的倒排索引系統按照上述基於Lucene的倒排索引系統構建方法構建;該處理單元,用於根據檢索關鍵字在倒排索引系統中的值對檢索結果按照該資料處理請求進行相應的資料處理。
較佳地,當接收單元接收的資料處理請求為統計檢索結果時,該處理單元包括:排序子單元和統計子單元,其
中:該排序子單元,用於根據檢索關鍵字在倒排索引系統中的值對檢索結果進行排序;該統計子單元,用於根據排序後的檢索結果進行資料統計。
較佳地,當資料處理請求為交叉分組檢索結果時,該處理單元包括:約束條件形成子單元和交叉分組子單元,其中:該約束條件形成子單元,用於根據檢索關鍵字在倒排索引系統中的值進行交叉組合,形成交叉分組檢索約束條件;該交叉分組子單元,用於根據檢索約束條件對檢索結果進行交叉分組。
較佳地,當資料處理請求為去重求和檢索結果時,該處理單元包括:記錄號查找子單元和資料物件合併子單元,其中:該記錄號查找子單元,用於根據檢索關鍵字在倒排索引系統中的值查找到該值對應的記錄號;該資料物件合併子單元,用於根據該記錄號取得待處理的資料物件,對取得的待處理資料物件進行求和操作。
本申請案實施例在將海量資料記錄的倒排索引寫入倒排檔案後,將倒排檔案的描述資訊寫入描述檔案,然後基於倒排檔案和倒排檔案的描述檔案構建倒排索引系統。與現有技術相比,本申請案實施例將倒引檔案和倒排檔案的
描述檔案分離為兩個或多個獨立檔案,從而避免了在倒排索引檔案本身寫完後進行檔案頭修改操作,適應了Lucene順序寫入檔案的特點,無需依賴外在儲存設備進行全部倒排檔案的Lucene寫入,由此提高了基於Lucene的倒排索引系統的構建效率。此外,本申請案實施例基於按照如上方式構建的Lucene倒排索引檔案系統可實現海量資料記錄的快速資料處理。
501‧‧‧第一寫入單元
502‧‧‧第二寫入單元
503‧‧‧構建單元
5011‧‧‧劃分子單元
5012‧‧‧寫入子單元
5031‧‧‧計算子單元
5032‧‧‧合併子單元
5033‧‧‧構建子單元
601‧‧‧接收單元
602‧‧‧檢索單元
603‧‧‧處理單元
為了更清楚地說明本申請案實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請案中記載的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為實施例一的基於Lucene的倒排索引系統構建方法流程圖;圖2(a)為實施例二的Lucene儲存的檔案列表示意圖;圖2(b)為實施例二的倒排索引系統構建方法流程圖;圖3為實施例三的基於倒排索引系統的資料處理方法流程圖;圖4(a)為實施例四的資料請求為統計檢索結果的資料處理示意圖;
圖4(b)為實施例四的資料請求為交叉分組的資料處理過程示意圖;圖4(c)為實施例四的資料請求為去重求和檢索結果的資料處理示意圖;圖5(a)為實施例五的基於Lucene的倒排索引系統構建裝置的結構方塊圖;圖5(b)為實施例五的基於倒排索引系統的資料處理裝置的結構方塊圖。
為了使本技術領域的人員更好地理解本申請案中的技術方案,下面將結合本申請案實施例中的附圖,對本申請案實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請案一部分實施例,而不是全部的實施例。基於本申請案中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都應當屬於本申請案保護的範圍。
如前所述,倒排索引是以資料操作物件的屬性值為關鍵字進行檢索,從而獲得與該關鍵字關聯的記錄,這種方式相比於傳統的逐行(頁)掃描方式獲得目標記錄,速度更快。但是,在對資料操作物件進行檢索之前,必須為這些
資料建立倒排索引系統,通常情況下,資料量越大構建倒排索引系統的時間越長,當面對的資料量急劇膨脹以致達到海量級別(比如100億行以上、成百上千列的表格包含的資料)時,這個過程耗費的時間甚至無法忍受。Lucene作為這方面的“領跑者”,但在海量資料構建倒排索引系統方面仍然效率較低。本實施例針對目前Lucene構建倒排索引系統過程中存在的缺陷,提出了改進措施。
參見圖1,該圖示出了本申請案實施例一的基於Lucene的倒排索引系統構建方法的流程圖。本實施例包括:
步驟S101:將海量資料的倒排索引寫入至少一個倒排檔案;倒排檔案是放置海量資料記錄的倒排索引的檔案,該檔案的大小根據實際應用需要可進行不同的設置,但不宜過大,過大將導致單個倒排檔案中放入過多用戶資料,增加訪問難度,也不宜過小,過小將導致倒排檔案系統出現臃腫,不便於快速訪問。通常情況下,選擇64KB左右為宜。資料量相當大的情況,寫入了倒排索引的倒排檔案將包含多個。本實施例對海量資料記錄的資料格式並無特殊的要求,可以是表格型資料,比如包含大量用戶相關和產品相關的企業統計表,也可以使文本型資料,比如大量的網頁文本,還可以是其他類型的資料。當然,在針對不同的資料類型,進行本步驟之前可以採取一些預處理措施,比如去噪、格式化、篩選等處理,以便加快倒排索引的建
立和寫入速度。
步驟S102:在各倒排檔案寫入完畢後,將寫入完畢的倒排檔案的描述資訊寫入與該倒排檔案關聯的至少一個描述檔案;倒排檔案根據其大小寫完倒排索引後,本實施例在單獨設置的新檔案中存放與該倒排檔案關聯的描述資訊,這裏的描述資訊可以是倒排檔案的大小、存放的倒排索引條數、檔案起始或終止地址等資訊。實際應用中可以在一個倒排檔案寫完後就進行描述資訊的寫入,也可以在全部倒排檔案均寫入完畢後,進行描述資訊的寫入。還需要說明的是:本實施例對倒排檔案與描述檔案之間的具體對應關係不作限定,可以是一個倒排檔案對應各自的描述檔案,也可以是多個倒排檔案對應一個描述檔案,在某些特殊情況下,甚至還可以多個倒排檔案對應一個描述檔案。
步驟103:基於倒排檔案及倒排檔案的描述檔案構建倒排索引系統;按照上述步驟形成倒排檔案及倒排檔案的描述檔案後,即可基於這些檔案構建出倒排索引系統,並將構建的倒排索引系統用於實現海量資料的檢索。構建倒排索引系統是對倒排檔案和描述檔案進行組織、管理的過程。
本實施例將海量資料的倒排索引寫入倒排檔案,並將倒排檔案的描述資訊寫入描述檔案,然後基於倒排檔案和倒排檔案的描述檔案構建倒排索引系統。與現有技術相比,本實施例將倒排檔案和倒排檔案的描述檔案分離為兩
個或多個獨立的檔案,從而避免了在倒排檔案寫完後進行檔案頭修改的過程,進而必須借助外在的儲存設備。本實施例適應了Lucene順序寫入檔案的特點,無需依賴外在儲存設備進行全部倒排檔案的Lucene寫入,提高了基於Lucene的倒排索引系統的構建效率。
為了進一步清楚說明本申請案的技術方案,下面以更加細化的基於Lucene的倒排索引構建過程為例(實施例二)予以闡釋。參見圖2(a),該圖示出了Lucene底層儲存結構中儲存的檔案列表,每一組這樣的檔案列表構成一個完整的倒排索引系統。該列表中“.tis”檔案即是用於儲存倒排索引的倒排檔案。參見圖2(b),該圖示出了本實施例的倒排索引系統的構建方法流程。本實施例包括:
步驟S201:啟動構建索引作業,將海量資料記錄劃分為多個資料分片;啟動構建索引系統後,調用多個Lucene進程,根據儲存空間的大小將海量資料記錄(原始資料)劃分為多個資料分片,每個資料分片的大小可以相同,也可以不同。比如,在海量資料記錄的資料量在TB至PB級別時,可將每個資料分片設定為1GB。本實施例中的海量資料記錄被劃分為k個資料分片,這些資料分片位於Lucene的HDFS系統中。
步驟S202:將每個資料分片內的資料記錄的倒排索
引寫入至少一個倒排檔案;
步驟S203:檢測倒排檔案是否寫入完畢,如果是,則執行步驟S204;如果否,則返回步驟S202;
步驟S204:將寫入完畢的倒排檔案的描述資訊寫入與該倒排檔案關聯的描述檔案;
步驟S205:選取資料記錄的一個屬性作為函數引數,按照預設函數映射關係求取函數值;資料記錄除具有唯一標識該記錄的標識號外,還具有多個屬性。比如,資料記錄以表格形式(行列)儲存,每行的行號可作為資料記錄的標識號,除行號外,每條資料記錄還包含多個列,每個列表徵了資料記錄的一個屬性。在選取函數引數時可以選取任何一列的值(屬性值)作為函數輸入,比如可以是用戶ID號、產品ID,或者其他的ID。這裏進行函數映射的預設函數也可以是多種。為便於說明,本實施例以求餘函數為例,當對選定的屬性值比如用戶ID進行求餘運算,得到有限個餘數值(1,2,...n),則每個資料分片被劃分為n組(這個n的數量與後續步驟的索引片分區的數量相同,因此,“n”又為稱為索引片分區的“Key值”)。
步驟S206:將具有相同函數值的多個資料記錄的倒排檔案及倒排檔案的描述檔案合併為一個索引片分區;將具有相同函數值的多個資料記錄的倒排檔案及描述檔案進行合併的步驟,在實際應用過程中包含兩個子步驟:一是資料分片內的合併;二是資料分片間的合併。對
於資料分片內的合併:由於每個資料分片內的資料記錄已根據求餘函數的n個餘數值(Key值)劃分為n組,並建立了每個資料記錄的倒排索引和描述檔案,因此,可以將餘數值相同的資料記錄對應的倒排索引及其描述檔案進行合併,合併後的倒排索引檔案稱為一個“小索引”,這樣,每個資料分區包含n個小索引,整個海量資料記錄共有k*n個小索引。對於資料分片間的合併:經過前述資料分片內的索引合併,已減少了索引檔案的數量,但是,為對索引系統進一步“壓縮”,有必要對位於不同資料分片之內但具有相同餘數值(Key值)“小索引”再進行合併,即將具有相同Key值的多個小索引合併為一個索引片分區(“大索引”)。然後將這些“大索引”順序寫入Lucene的HDFS檔案系統中。在Lucene系統中,前述資料分片內的索引合併過程體現為Map過程,資料分片間的索引合併過程體現為Reduce過程。此外,為了方便對“小索引”的合併,在實際應用過程中還可以透過suffle過程將Hadoop中k*n個小索引檔案按照key排序後進行合併操作。
步驟S207:基於多個索引片分區構建倒排索引系統;按照前述方式構建出多個“大索引”,基於這些大索引構建倒排索引系統,進而依據倒排索引系統進行海量資料的檢索。
本實施例透過修改Lucene底層索引儲存結構,使得
倒排檔案可以順序寫入HDFS中,而無需如現有技術那樣先寫在本地磁片,然後上傳到HDFS,從而同樣能夠取得前述實施例的技術效果:提高到排索引系統構建的效率。此外,本實施例在建立索引系統的中間環節,採用Map-Reduce作業進一步優化索引系統構建過程,減少了磁片開銷,從而相對於現有技術而言,進一步提高了基於Lucene的倒排索引系統的構建效率。為了定量說明本實施例與現有技術的技術效果上的差異,申請人在相同資料量、相同配置的資料處理能力的系統中進行實驗。實驗結果表明:現有技術需要12個小時完成的倒排索引系統構建過程可縮短到1.5小時內,效率提高了87.5%。
按照前述實施例構建出基於Lucene的倒排索引系統後,可在該倒排索引系統基礎上進行一系列資料處理操作,從而構成本申請案的第三實施例。參見圖3,該圖示出了本實施例的方法流程。本實施例包括:
步驟S301:接收用戶輸入的檢索關鍵字和資料處理請求;基於實際工作需要,用戶需要從海量資料中檢索出需要的資料,並對這些資料進行處理操作,比如透過對用戶相關和產品相關的資料庫進行檢索,獲取分析用戶消費分群、用戶流失原因的相關資料,網站運營人員或商務智慧分析師從海量資料中檢索出有價值的資訊。完成檢索必須
獲得檢索關鍵字。此外,如果需要在檢索基礎上進行必要的資料處理,比如檢索結果統計、交叉分組、去重處理等,還需要接收資料處理請求。
步驟S302:利用Lucene倒排索引系統根據檢索關鍵字檢索海量資料記錄,該Lucene的倒排索引系統按照上述基於Lucene的倒排索引系統構建方法構建;獲得關鍵字後即可利用前述實施例構建的倒排索引系統進行海量資料的檢索。由於此處接收的“關鍵字”是建立倒排索引系統過程中採用的關鍵字,透過該關鍵字即能夠迅速地查找到以該關鍵字為屬性值的記錄,從截取需要的資料。
步驟S303:根據檢索關鍵字在倒排索引系統中的值對檢索結果按照資料處理請求進行相應的資料處理。
本實施例基於Lucene的倒排索引系統,根據關鍵字和資料處理請求進行相應的資料處理。由於本實施例的資料處理過程採用了“特定”的倒排索引系統,相對於其他資料處理過程,比如不能支援海量資料快速檢索的典型資料庫集群(Oracle RAC)、採用順序掃描方式的典型NOSQL集群等,其資料處理過程的效率得到提高。根據定量試驗顯示,典型資料庫集群、典型NOSQL集群的資料處理時間通常以分鐘甚至小時計,而本實施例在用戶提交資料處理請求後在數秒內(1~10s)即可得到結果,比前述兩種方式快100倍以上。此外,本實施例還具有高並發負載和低成本(在相同的資料量和資料處理能力前提下,相對其他方
案採用的伺服器最少)的優勢。
實施例三敍述了本申請案基於Lucene倒排索引系統的資料處理過程,為了更清楚地說明該技術方案,下面分別以三種具體的資料處理過程予以闡釋。
參見圖4(a),該圖示出了資料請求為統計檢索結果時的資料處理過程。當資料處理請求為統計檢索結果時,根據檢索關鍵字在倒排索引系統中的值對檢索結果進行資料處理包括:根據檢索關鍵字在倒排索引系統中的值對檢索結果進行排序,根據排序後的檢索結果進行資料統計處理。圖中左側為檢索結果未排序的情況,中間為基於Lucene倒排索引系統利用Lucene的檢索排序程式(sort)的過程,右側為經過排序後的檢索結果集。由於可以從已經建好的倒排索引系統中直接取值,並依據該值進行排序,排序過程可以與查詢過程同時進行,從而比順序掃描的方式進行統計操作速度快幾個數量級,當進行統計操作的資料物件越多,優勢體現越明顯。本實施例中統計操作可以具體為求和(SUM)、求最大(小)值(MAX/MIN)、計數(COUNT)、平均值(AVERAGE)等。
參見圖4(b),該圖示出了資料處理請求為交叉分組檢索結果時的資料處理過程。當資料處理請求為交叉分組檢索結果時,根據檢索關鍵字在倒排索引系統中的值對檢索結果進行資料處理包括:根據檢索關鍵字在倒排索引系統
中的值進行兩兩交叉組合,形成新的交叉分組檢索約束條件,根據該檢索約束條件對檢索結果進行交叉分組。圖中上端為倒排索引系統中的兩列資料(A列、B列),該兩列資料的具體值可透過Lucene的facet方法取得;中間是透過兩列資料構造的約束條件表格;下端是根據表格獲得的查詢語句。本實施例的交叉分組方法,由於在建立倒排索引系統過程中已經預先知道每個列資料的具體值,因此,可加快約束條件表格的構建,從而提高交叉分組的效率。
參見圖4(c),該圖示出了資料處理請求為去重求和檢索結果時的資料處理過程。當資料處理請求為去重求和檢索結果時,根據檢索關鍵字在倒排索引系統中的值對檢索結果進行資料處理包括:根據檢索關鍵字在倒排索引系統中的值查找到對應的記錄號,根據該記錄號取得待處理的另一列待求和資料物件,對取得的待處理資料物件進行合併操作。圖中上端是倒排索引系統中的一列已經預先在建索引階段進行了分組、去重的資料(A列),該列資料的具體值可透過Lucene的facet方法取得,中間是根據文檔ID取得的另一列需要求和處理的資料(B列),這些資料經過圖中下端的求和(function)功能處理後,得到去重且對另一列進行求和的返回結果。本實施例的去重求和處理方法,由於在建立倒排索引系統過程中已經預先知道每個列資料的具體值,因此,能夠快速地去掉一些具有重覆且重覆率低的檢索結果,從而提高求和效率。
以上是對本申請案方法實施例的描述,本申請案還提供了基於Lucene的倒排索引系統構建裝置和基於Lucene的倒排索引系統的資料處理裝置實施例。參見附圖5(a),該圖示出了基於Lucene的倒排索引系統構建裝置的結構。本裝置實施例包括:第一寫入單元501、第二寫入單元502和構建單元503,其中:第一寫入單元501,用於將海量資料記錄的倒排索引順序寫入至少一個倒排檔案;第二寫入單元502,用於在各倒排檔案寫入完畢後,將寫入完畢的倒排檔案的描述資訊寫入與該倒排檔案關聯的至少一個描述檔案;構建單元503,用於基於倒排檔案及倒排檔案的描述檔案構建倒排索引系統。
本倒排索引系統構建裝置的工作過程是:第一寫入單元501將海量資料記錄的倒排索引順序寫入至少一個倒排檔案,由第二寫入單元502在各倒排檔案寫入完畢後,將寫入完畢的倒排檔案的描述資訊寫入與該倒排檔案關聯的至少一個描述檔案,最後構建單元503基於倒排檔案及倒排檔案的描述檔案構建倒排索引系統。
本倒排索引系統構建裝置實施例將海量資料的倒排索引寫入倒排檔案,並將倒排檔案的描述資訊寫入描述檔案,然後基於倒排檔案和倒排檔案的描述檔案構建倒排索引系統。與現有技術相比,本構建裝置實施例將倒排檔案
和倒排檔案的描述檔案分離為兩個或多個獨立的檔案,從而避免了在倒排檔案寫完後進行檔案頭修改的過程,進而必須借助外在的儲存設備。本構建裝置實施例適應了Lucene順序寫入檔案的特點,無需依賴外在儲存設備進行全部倒排檔案的Lucene寫入,提高了基於Lucene的倒排索引系統的構建效率。
在上述的構建裝置中,第一寫入單元根據不同的實際情況可以有不同的具體結構。比如,第一寫入單元501可以包括:劃分子單元5011、寫入子單元5012,其中:劃分子單元5011,用於將海量資料記錄劃分為多個資料分片,寫入子單元5012,用於將每個資料分片內的資料記錄的倒排索引寫入至少一個倒排檔案。與第一寫入單元的結構相適應地,構建單元503具體可以包括:計算子單元5031、合併子單元5032和構建子單元5033,其中:計算子單元5031,用於選取資料的一個屬性作為函數引數,按照預設函數映射關係計算函數值;合併子單元5032,用於將具有相同函數值的多個資料記錄的倒排檔案及倒排檔案的描述檔案合併為一個索引片分區;構建子單元5033,用於基於多個索引片分區構建倒排索引系統。
基於上述倒排索引系統的構建裝置,還可以進行資料處理。參見圖5(b),該圖示出了基於Lucene的倒排索引系統的資料處理裝置,該裝置接收單元601、檢索單元602和處理單元603,其中:接收單元601,用於接收用戶輸入的檢索關鍵字和資
料處理請求;檢索單元602,用於利用Lucene倒排索引系統根據檢索關鍵字對海量資料進行檢索,該Lucene倒排索引系統按照上述基於Lucene的倒排索引系統構建方法構建;處理單元603,用於根據檢索關鍵字在倒排索引系統中的值對檢索結果按照資料處理請求進行相應的資料處理。
本資料處理裝置的工作過程是:接收單元601接收用戶輸入的檢索關鍵字和資料處理請求後,由檢索單元602利用Lucene倒排索引系統根據檢索關鍵字對海量資料進行檢索,然後處理單元603根據檢索關鍵字在倒排索引系統中的值對檢索結果按照資料處理請求進行相應的資料處理。
本資料處理裝置由於採用了特定的倒排檔案系統,能夠極大地提高資料處理速率。此外,本資料處理裝置基於不同的資料處理類型還可以具有更多的具體結果。比如,當接收單元接收的資料處理請求為統計檢索結果時,該處理單元包括:排序子單元和統計子單元,其中:該排序子單元,用於根據檢索關鍵字在倒排索引系統中的值對檢索結果進行排序;該統計子單元,用於根據排序後的檢索結果進行資料統計處理。當資料處理請求為交叉分組檢索結果時,該處理單元包括:約束條件形成子單元和交叉分組子單元,其中:該約束條件形成子單元,用於根據檢索關鍵字在倒排索引系統中的值進行兩兩交叉組合,形成新的
交叉分組檢索約束條件;該交叉分組子單元,用於根據檢索約束條件對檢索結果進行交叉分組。當資料處理請求為去重檢索結果時,該處理單元包括:記錄號查找子單元和資料物件合併子單元,其中:該記錄號查找子單元,用於根據檢索關鍵字在倒排索引系統中的值查找到對應的記錄號;該資料物件合併子單元,用於根據該記錄號取得待處理的資料物件,對取得的待處理資料物件進行合併操作。
為了描述的方便,描述以上裝置時以功能分為各種單元分別描述。當然,在實施本申請案時可以把各單元的功能在同一個或多個軟體和/或硬體中實現。
透過以上的實施方式的描述可知,本領域的技術人員可以清楚地瞭解到本申請案可借助軟體加必需的通用硬體平台的方式來實現。基於這樣的理解,本申請案的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟體產品的形式體現出來,該電腦軟體產品可以儲存在儲存介質中,如ROM/RAM、磁碟、光碟等,包括若干指令用以使得一台電腦設備(可以是個人電腦,伺服器,或者網路設備等)執行本申請案各個實施例或者實施例的某些部分所述的方法。
本說明書中的各個實施例均採用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對於系統實施例而言,由於其基本相似於方法實施例,所以描述得比較簡單,相關之處參見方法實施例的部分說明即可。
以上所描述的系統實施例僅僅是示意性的,其中該作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分佈到多個網路單元上。可以根據實際的需要選擇其中的部分或者全部模組來實現本實施例方案的目的。本領域普通技術人員在不付出創造性勞動的情況下,即可以理解並實施。
本申請案可用於眾多通用或專用的計算系統環境或配置中。例如:個人電腦、伺服器電腦、手持設備或攜帶型設備、平板型設備、多處理器系統、基於微處理器的系統、機上盒、可編程的消費電子設備、網路PC、小型電腦、大型電腦、包括以上任何系統或設備的分散式計算環境等等。
本申請案可以在由電腦執行的電腦可執行指令的一般上下文中描述,例如程式模組。一般地,程式模組包括執行特定任務或實現特定抽象資料類型的常式、程式、物件、元件、資料結構等等。也可以在分散式計算環境中實踐本申請案,在這些分散式計算環境中,由透過通信網路而被連接的遠端處理設備來執行任務。在分散式計算環境中,程式模組可以位於包括儲存設備在內的本地和遠端電腦儲存介質中。
以上所述僅是本申請案的具體實施方式,應當指出,對於本技術領域的普通技術人員來說,在不脫離本申請案原理的前提下,還可以做出若干改進和修改,這些改進和
修改也應視為本申請案的保護範圍。
Claims (10)
- 一種基於Lucene的倒排索引系統構建方法,其特徵在於,該方法包括:將海量資料記錄的倒排索引寫入至少一個倒排檔案;在倒排檔案寫入完畢後,將寫入完畢的倒排檔案的描述資訊寫入與該倒排檔案關聯的至少一個描述檔案;以及基於倒排檔案及倒排檔案的描述檔案構建倒排索引系統。
- 根據申請專利範圍第1項所述的方法,其中,該將海量資料記錄的倒排索引寫入至少一個倒排索引檔案具體包括:將海量資料記錄劃分為多個資料分片,將每個資料分片內的資料記錄的倒排索引寫入至少一個倒排檔案;該基於倒排檔案及倒排檔案的描述檔案構建倒排索引系統具體包括:選取資料記錄的一個屬性作為函數引數,按照預設函數映射關係求取函數值;將具有相同函數值的多個資料記錄的倒排檔案及倒排檔案的描述檔案合併為一個索引片分區;以及基於多個索引片分區構建倒排索引系統。
- 一種基於Lucene的倒排索引系統的資料處理方法,其特徵在於,該方法包括:接收用戶輸入的檢索關鍵字和資料處理請求;利用Lucene的倒排索引系統根據檢索關鍵字檢索海 量資料記錄,該Lucene的倒排索引系統按照上述申請專利範圍第1或2項所述的方法構建;以及根據檢索關鍵字在倒排索引系統中的值對檢索結果按照該資料處理請求進行相應的資料處理。
- 根據申請專利範圍第3項所述的方法,其中,當資料處理請求為統計檢索結果時,根據檢索關鍵字在倒排索引系統中的值對檢索結果進行資料處理具體包括:根據檢索關鍵字在倒排索引系統中的值對檢索結果進行排序,根據排序後的檢索結果進行資料統計。
- 根據申請專利範圍第3項所述的方法,其中,當資料處理請求為交叉分組檢索結果時,根據檢索關鍵字在倒排索引系統中的值對檢索結果進行資料處理具體包括:根據檢索關鍵字在倒排索引系統中的值進行交叉組合,形成交叉分組檢索約束條件,根據該檢索約束條件對檢索結果進行交叉分組。
- 根據申請專利範圍第3項所述的方法,其中,當資料處理請求為去重求和檢索結果時,根據檢索關鍵字在倒排索引系統中的值對檢索結果進行資料處理具體包括:根據檢索關鍵字在倒排索引系統中的值查找到該值對應的記錄號,根據該記錄號取得待處理的資料物件,對取得的待處理資料物件進行求和操作。
- 一種基於Lucene的倒排索引系統構建裝置,其特徵在於,該裝置包括:第一寫入單元、第二寫入單元和構建單元,其中: 該第一寫入單元,用於將海量資料記錄的倒排索引寫入至少一個倒排檔案;該第二寫入單元,用於在倒排檔案寫入完畢後,將寫入完畢的倒排檔案的描述資訊寫入與該倒排檔案關聯的至少一個描述檔案;以及該構建單元,用於基於倒排檔案及倒排檔案的描述檔案構建倒排索引系統。
- 根據申請專利範圍第7項所述的裝置,其中,該第一寫入單元具體包括:劃分子單元、寫入子單元,其中:該劃分子單元,用於將海量資料記錄劃分為多個資料分片;該寫入子單元,用於將每個資料分片內的資料記錄的倒排索引寫入至少一個倒排檔案;該構建單元具體包括:計算子單元、合併子單元和構建子單元,其中:該計算子單元,用於選取資料記錄的一個屬性作為函數引數,按照預設函數映射關係計算函數值;該合併子單元,用於將具有相同函數值的多個資料記錄的倒排檔案及倒排檔案的描述檔案合併為一個索引片分區;以及該構建子單元,用於基於多個索引片分區構建倒排索引系統。
- 一種基於Lucene的倒排索引系統的資料處理裝 置,其特徵在於,該裝置包括:接收單元、檢索單元和處理單元,其中:該接收單元,用於接收用戶輸入的檢索關鍵字和資料處理請求;該檢索單元,用於利用Lucene的倒排索引系統根據檢索關鍵字對海量資料記錄進行檢索,該Lucene的倒排索引系統按照上述申請專利範圍第1或2項所述的方法構建;以及該處理單元,用於根據檢索關鍵字在倒排索引系統中的值對檢索結果按照該資料處理請求進行相應的資料處理。
- 根據申請專利範圍第9項所述的裝置,其中,當接收單元接收的資料處理請求為統計檢索結果時,該處理單元包括:排序子單元和統計子單元,其中:該排序子單元,用於根據檢索關鍵字在倒排索引系統中的值對檢索結果進行排序;該統計子單元,用於根據排序後的檢索結果進行資料統計;當資料處理請求為交叉分組檢索結果時,該處理單元包括:約束條件形成子單元和交叉分組子單元,其中:該約束條件形成子單元,用於根據檢索關鍵字在倒排索引系統中的值進行交叉組合,形成交叉分組檢索約束條件;該交叉分組子單元,用於根據檢索約束條件對檢索結 果進行交叉分組;當資料處理請求為去重求和檢索結果時,該處理單元包括:記錄號查找子單元和資料物件求和子單元,其中:該記錄號查找子單元,用於根據檢索關鍵字在倒排索引系統中的值查找到該值對應的記錄號;以及該資料物件求和子單元,用於根據該記錄號取得待處理的資料物件,對取得的待處理資料物件進行求和操作。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210380761.5A CN103714096B (zh) | 2012-10-09 | 2012-10-09 | 基于Lucene的倒排索引系统构建、数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201415262A true TW201415262A (zh) | 2014-04-16 |
TWI603211B TWI603211B (zh) | 2017-10-21 |
Family
ID=49448292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102111884A TWI603211B (zh) | 2012-10-09 | 2013-04-02 | Construction of inverted index system based on Lucene, data processing method and device |
Country Status (4)
Country | Link |
---|---|
US (1) | US9256665B2 (zh) |
CN (1) | CN103714096B (zh) |
TW (1) | TWI603211B (zh) |
WO (1) | WO2014058711A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462558B (zh) * | 2014-12-26 | 2017-12-08 | 浙江宇视科技有限公司 | 一种修改Lucene索引文件中词的方法及装置 |
CN105550236B (zh) * | 2015-11-27 | 2019-03-01 | 广州华多网络科技有限公司 | 一种分布式数据去重处理方法及装置 |
CN107784027A (zh) * | 2016-08-31 | 2018-03-09 | 北京国双科技有限公司 | 一种裁判文书检索关键词的提示方法及装置 |
US10762071B2 (en) * | 2016-11-29 | 2020-09-01 | Sap Se | Value-ID-based sorting in column-store databases |
CN107229714B (zh) * | 2017-05-31 | 2020-02-14 | 杭州宇为科技有限公司 | 一种基于分布式数据库的全文搜索引擎 |
CN107423425B (zh) * | 2017-08-02 | 2020-08-14 | 德比软件(上海)有限公司 | 一种对k/v格式的数据快速存储和查询方法 |
CN109934610B (zh) * | 2017-12-19 | 2023-09-05 | 北京奇虎科技有限公司 | 一种广告受众用户数据的处理方法和装置 |
CN108256096B (zh) * | 2018-01-30 | 2021-01-22 | 北京搜狐新媒体信息技术有限公司 | 一种数据处理方法及装置 |
CN108920553B (zh) * | 2018-06-19 | 2020-10-30 | 西安电子科技大学 | 一种用于机载多传感器平台的数据记录方法 |
CN108920687B (zh) * | 2018-07-12 | 2021-08-31 | 重庆邮电大学 | 一种基于Lucene索引段的合并优化方法 |
CN109299101B (zh) * | 2018-10-15 | 2020-12-01 | 上海达梦数据库有限公司 | 数据检索方法、装置、服务器和存储介质 |
CN109491982B (zh) * | 2018-10-22 | 2021-10-22 | 上海豹云网络信息服务有限公司 | 移动互联网的移动终端内创建虚拟存储单元的方法及系统 |
US10785098B1 (en) * | 2019-04-30 | 2020-09-22 | Alibaba Group Holding Limited | Network configuration using multicast address modulation |
CN110533450A (zh) * | 2019-07-17 | 2019-12-03 | 上海数据交易中心有限公司 | 数据流通方法及装置、存储介质、服务器 |
CN111061830B (zh) * | 2019-12-27 | 2023-12-05 | 深圳市元征科技股份有限公司 | 一种汽修数据的处理方法及装置 |
CN114490917A (zh) * | 2020-11-11 | 2022-05-13 | 北京神州泰岳软件股份有限公司 | 一种全文检索功能的实现方法、装置与电子设备 |
CN114461751A (zh) * | 2022-03-03 | 2022-05-10 | 掌阅科技股份有限公司 | 倒排索引表构建方法、资源检索方法、设备及存储介质 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7016914B2 (en) | 2002-06-05 | 2006-03-21 | Microsoft Corporation | Performant and scalable merge strategy for text indexing |
CN1292371C (zh) | 2003-04-11 | 2006-12-27 | 国际商业机器公司 | 倒排索引存储方法、倒排索引机制以及在线更新的方法 |
US7149748B1 (en) | 2003-05-06 | 2006-12-12 | Sap Ag | Expanded inverted index |
US7472195B2 (en) * | 2003-11-19 | 2008-12-30 | International Business Machines Corporation | Unobtrusive port and protocol sharing among server processes |
US7716211B2 (en) | 2004-02-10 | 2010-05-11 | Microsoft Corporation | System and method for facilitating full text searching utilizing inverted keyword indices |
US7899796B1 (en) * | 2004-11-23 | 2011-03-01 | Andrew Borthwick | Batch automated blocking and record matching |
JP2006155371A (ja) * | 2004-11-30 | 2006-06-15 | Yamaha Corp | ディジタル情報複製管理装置 |
US7664928B1 (en) * | 2005-01-19 | 2010-02-16 | Tensilica, Inc. | Method and apparatus for providing user-defined interfaces for a configurable processor |
US8504597B2 (en) * | 2005-09-09 | 2013-08-06 | William M. Pitts | Distributed file system consistency mechanism extension for enabling internet video broadcasting |
JP4581962B2 (ja) | 2005-10-27 | 2010-11-17 | 株式会社日立製作所 | 情報検索システムとインデクス管理方法およびプログラム |
CN100458779C (zh) * | 2005-11-29 | 2009-02-04 | 国际商业机器公司 | 扩展索引的方法 |
US7765215B2 (en) | 2006-08-22 | 2010-07-27 | International Business Machines Corporation | System and method for providing a trustworthy inverted index to enable searching of records |
US8321485B2 (en) | 2006-11-08 | 2012-11-27 | Hitachi, Ltd. | Device and method for constructing inverted indexes |
US8171029B2 (en) | 2007-10-05 | 2012-05-01 | Fujitsu Limited | Automatic generation of ontologies using word affinities |
US20090228528A1 (en) * | 2008-03-06 | 2009-09-10 | International Business Machines Corporation | Supporting sub-document updates and queries in an inverted index |
US7917463B2 (en) * | 2008-10-10 | 2011-03-29 | Business.Com, Inc. | System and method for data warehousing and analytics on a distributed file system |
CN101739400B (zh) | 2008-11-11 | 2014-08-13 | 日电(中国)有限公司 | 生成索引的方法和装置以及检索方法和装置 |
CN101458695A (zh) * | 2008-12-18 | 2009-06-17 | 西交利物浦大学 | 基于关键词和内容特征的混合图片索引构建和查询方法及其应用 |
US8260784B2 (en) * | 2009-02-13 | 2012-09-04 | International Business Machines Corporation | Indexing and searching JSON objects |
CN101520800B (zh) * | 2009-03-27 | 2010-09-01 | 华中科技大学 | 一种基于密文的安全全文索引和检索系统 |
US8271499B2 (en) | 2009-06-10 | 2012-09-18 | At&T Intellectual Property I, L.P. | Incremental maintenance of inverted indexes for approximate string matching |
TWI485570B (zh) * | 2010-03-10 | 2015-05-21 | Alibaba Group Holding Ltd | Information retrieval method and its system |
-
2012
- 2012-10-09 CN CN201210380761.5A patent/CN103714096B/zh active Active
-
2013
- 2013-04-02 TW TW102111884A patent/TWI603211B/zh active
- 2013-10-03 US US14/045,613 patent/US9256665B2/en active Active
- 2013-10-03 WO PCT/US2013/063291 patent/WO2014058711A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US9256665B2 (en) | 2016-02-09 |
CN103714096A (zh) | 2014-04-09 |
CN103714096B (zh) | 2018-02-13 |
US20140101167A1 (en) | 2014-04-10 |
WO2014058711A1 (en) | 2014-04-17 |
TWI603211B (zh) | 2017-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI603211B (zh) | Construction of inverted index system based on Lucene, data processing method and device | |
US10169409B2 (en) | System and method for transferring data between RDBMS and big data platform | |
US9767174B2 (en) | Efficient query processing using histograms in a columnar database | |
US9367574B2 (en) | Efficient query processing in columnar databases using bloom filters | |
US9507825B2 (en) | Techniques for partition pruning based on aggregated zone map information | |
US10114908B2 (en) | Hybrid table implementation by using buffer pool as permanent in-memory storage for memory-resident data | |
US9223820B2 (en) | Partitioning data for parallel processing | |
JP6964384B2 (ja) | 異種データソース混在環境におけるフィールド間の関係性の自動的発見のための方法、プログラム、および、システム | |
US20120303633A1 (en) | Systems and methods for querying column oriented databases | |
US9672241B2 (en) | Representing an outlier value in a non-nullable column as null in metadata | |
US10860562B1 (en) | Dynamic predicate indexing for data stores | |
WO2017096892A1 (zh) | 索引构建方法、查询方法及对应装置、设备、计算机存储介质 | |
US20140101132A1 (en) | Swapping expected and candidate affinities in a query plan cache | |
WO2017161540A1 (zh) | 数据查询的方法、数据对象的存储方法和数据系统 | |
CN117033424A (zh) | 慢sql语句的查询优化方法、装置和计算机设备 | |
Das et al. | NoSQL overview and performance testing of HBase over multiple nodes with MYSQL | |
US9229969B2 (en) | Management of searches in a database system | |
US10872103B2 (en) | Relevance optimized representative content associated with a data storage system | |
CN103891244B (zh) | 一种进行数据存储和检索的方法及装置 | |
WO2015058628A1 (zh) | 文件的访问方法及装置 | |
CN105224596A (zh) | 一种访问数据的方法及装置 | |
CN115168409B (zh) | 数据库分表的数据查询方法、装置和计算机设备 | |
US11822582B2 (en) | Metadata clustering | |
WO2024108639A1 (zh) | 一种基于多维度特征的数据管理方法和装置 | |
CN117708380A (zh) | 基于LSM-tree时序数据库的查询方法、设备和存储介质 |