版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Lucene索引結構,任化偉,概要,基礎數(shù)據(jù)類型 邏輯結構 物理結構 數(shù)據(jù)流圖 注意事項,基礎數(shù)據(jù)類型,以上的數(shù)據(jù)類型就是Lucene索引文件格式中用到的全部數(shù)據(jù)類型,由于它們都以字節(jié)為基礎定義而來,因此保證了是平臺無關。,概要,基礎數(shù)據(jù)類型 邏輯結構 物理結構 數(shù)據(jù)流圖 注意事項,邏輯結構,Lucene索引index由若干段(segment)組成,每一段由若干的文檔(document)組 成,每一個文檔由若干的域(field)組成,每一個域由若干的項(term)組成。 項是最小的索引概念單位,它直接代表了一個字符串以及其在文件中的位置、 出現(xiàn)次數(shù)等信息。,概要,基礎數(shù)據(jù)類型 邏輯結構 物理結
2、構 數(shù)據(jù)流圖 注意事項,物理結構,Lucene索引文件結構組成,Segments文件(一),2.1版前: Segments - Format, Version, NameCounter, SegCount, SegCount 2.1及以上版本: Segments - Format, Version, NameCounter, SegCount, SegCount 2.3及以上版本:Segments - Format, Version, NameCounter, SegCount, SegCount Format, NameCounter, SegCount, SegSize, NumField
3、, DocStoreOffset -U Int32 Version, DelGen, NormGen - UInt64 SegName, DocStoreSegment - String IsCompoundFile, HasSingleNormFile, DocStoreIsCompoundFile - Byte,Segments文件(二),在1.4版前Format 為-1,1.4-2.0版為-2,2.1、2.2版為-3,2.3及以上版本為-4。 Format為索引版本變更的標志,在1.4版引入了復合索引( .cfs ),在2.1版去除了commit.lock,在2.3版加入了共享存儲,所以
4、進行了版本升級。 Version:存儲的最后一次修改索引的時間 NameCounter:用來生成新的segment名稱的 SegName:在符合索引中的segment的擴展名 SegSize:索引中的document的總數(shù)量 DelGen:標記那些文檔被刪除了 NumField:記錄了被刪除文檔的個數(shù) IsCompoundFile:文檔是否壓縮存儲的標志 DocStoreOffset, DocStoreSegment, DocStoreIsCompoundFile: 如果DocStoreOffset為-1,則segment自己存儲文檔信息,不在存儲DocStoreSegment, DocSto
5、reIsCompoundFile信息;否則 DocStoreSegment是共享存儲文件的名稱,DocStoreIsCompoundFile標志了共享文件是否為復合索引文件,DocStoreOffset是文檔在共享索引文件中的偏移量。,segments.gen文件,從2.1版開始存儲segments.gen文件 segments.gen- Format, Twice Format-UInt32 Generation- UInt64 segments.gen保存了當前段號,可以在最后一個段處理失效時進行回退處理。在分布式環(huán)境下由客服端cache失效導致的異??梢杂性摍C制處理。,鎖文件(.lock
6、文件),鎖文件:用來表示另一個進程在使用索引的文件。 1、如果存在“commit.lock”文件,表示有進程在寫“segments”文件和刪除無用的段索引文件,或者表示有進程在讀“segments”文件和打開某些段的文件。在一個進程在讀取“segments”文件段信息后,還沒來得及打開所有該段的文件前,這個Lock文件可以防止另一個進程刪除這些文件。從2.1版本去除了該鎖文件。 2、如果存在index.lock文件,表示有進程在向索引中加入文檔,或者是從索引中刪除文檔。這個文件防止很多文件同時修改一個索引。,被刪除的文檔(.del文件),Deletions (.del) - ByteCount
7、,BitCount,Bits ByteSize,BitCount - UInt32 Bits - ByteCount ByteCount表示的是Bits列表中Byte的數(shù)量。典型的,它等于(SegSize/8)+1。 BitCount表示Bits列表中多少個已經被設置過了。 Bits列表包含了一些位(bit),順序表示一個文檔。當對應于文檔號的位被設置了,就標志著這個文檔已經被刪除了。 從2.1版不在村粗.del文件,而是在segments文件中存儲,詳情請參考Segments文件中的DelGen。,復合索引( .cfs 文件),Compound (.cfs) - FileCount, Fil
8、eCount , FileData FileCount FileCount - UInt32 DataOffset - UInt64 FileName - String FileData - raw file data raw file data:下面將要講到的.ftx、.ftd、.tis、.tii等文件 從2.3版,可以共享存儲的域值,如果該復合索引的域值是被共享了的,則擴展名應修改為.cfx,域信息(.fnm文件),FieldInfos (.fnm) - FieldsCount, FieldsCount FieldsCount - VInt FieldName - String Field
9、Bits - Byte FieldBits用來表示該域是否被索引、存儲等性質。,域索引(.fdx文件),FieldIndex(.fdx)- SegSize FieldvaluesPosition-Uint64 FieldvaluesPosition指示的是某一文檔的某域的域值在域值文件中的位置。因為域值文件含有定長的數(shù)據(jù)信息,因而很容易隨機訪問。在域值文件中,文檔n的域值信息就存在n*8位置處。,域值(.fdt文件),FieldData(.fdt)-SegSize DocFieldData- FieldCount,FieldCount FieldCount-VInt,域的個數(shù) FieldNum
10、-Vint,.fnm文件中的域號 Bits-Byte,域值的性質 value-String,域值 Bits低位值為1表示域名被分解過,值為0表示未分解過; 第二位表示數(shù)據(jù)是否為2進制的;第三位標志數(shù)據(jù)是否為壓縮存儲的。,項信息(.tis文件)(一),TermInfoFile (.tis)- TermCount, TermInfos TermCount - UInt32 TermInfos - TermCount TermInfo - Term - Suffix - String PrefixLength, DocFreq, FreqDelta, ProxDelta - VInt 項信息按項排序
11、。項信息排序時先按項所屬的域的文字順序排序,然后按照項的字串的文字順序排序。,項信息(.tis文件)(二),項的字前綴往往是共同的,與字的后綴組成字。PrefixLength變量就是表示與前一項相同的前綴的字數(shù)。因此,如果前一個項的字是bone,后一個是boy的話,PrefixLength值為2,Suffix值為y。 FieldNum指明了項屬于的域號,而域名存儲在.fdt文件中。 DocFreg表示的是含有該項的文檔的數(shù)量。 FreqDelta指明了項所屬TermFreq變量在.frq文件中的位置。詳細的說,就是指相對于前一個項的數(shù)據(jù)的位置偏移量(或者是0,表示文件中第一個項)。 ProxD
12、elta指明了項所屬的TermPosition變量在.prx文件中的位置。詳細的說,就是指相對于前一個項的數(shù)據(jù)的位置偏移量(或者是0,表示文件中第一個項)。,項信息索引(.tii文件),每個項信息索引文件包含.tis文件中的128個條目,依照條目在.tis文件中的順序。這樣設計是為了一次將索引信息讀入內存能,然后使用它來隨機的訪問.tis文件。 這個文件的結構和.tis文件非常類似,只在每個條目記錄上增加了一個變量IndexDelta。 TermInfoIndex (.tii)- IndexTermCount, TermIndices IndexTermCount - UInt32 TermI
13、ndices - IndexTermCount IndexDelta - VInt IndexDelta表示該項的TermInfo變量值在.tis文件中的位置。詳細的講,就是指相對于前一個條目的偏移量(或者是0,對于文件中第一個項)。,項頻數(shù)(.frq文件),.frq文件包含每一項的文檔的列表和該項在對應文檔中出現(xiàn)的頻數(shù) FreqFile (.frq) - TermCount TermFreqs - DocFreq TermFreq - DocDelta, Freq? DocDelta,Freq - VInt TermFreqs序列按照項來排序(依據(jù)于.tis文件中的項,即項是隱含存在的)。
14、TermFreq元組按照文檔號升序排列。 DocDelta 決定了文檔號和頻數(shù)。詳細的說,DocDelta/2表示相對于前一文檔號的偏移量(或者是0,表示這是TermFreqs里面的第一項)。當 DocDelta是奇數(shù)時表示在該文檔中頻數(shù)為1,當DocDelta是偶數(shù)時,另一個VInt(Freq)就表示在該文檔中出現(xiàn)的頻數(shù)。 例如,假設某一項在文檔7中出現(xiàn)一次,在文檔11中出現(xiàn)了3次,在TermFreqs中就存在如下的VInts序列: 15, 22, 3,項位置(.prx文件),.prx文件包含了某文檔中某項出現(xiàn)的位置信息的列表。 ProxFile (.prx) - TermCount Ter
15、mPositions - DocFreq Positions - Freq PositionDelta - VInt TermPositions按照項來排序(依據(jù)于.tis文件中的項,即項是隱含存在的)。 Positions元組按照文檔號升序排列。 PositionDelta是相對于前一個出現(xiàn)位置的偏移位置(或者為0,表示這是第一次在這個文檔中出現(xiàn))。例如,假設某一項在某文檔第4項出現(xiàn),在另一個文檔中第5項和第9項出現(xiàn),將存在如下的VInt序列: 4, 5, 4 。 上述例子中如何得知4, 5, 4 的分割方式?參照.frq文件。,概要,基礎數(shù)據(jù)類型 邏輯結構 物理結構 數(shù)據(jù)流圖 注意事項,數(shù)
16、據(jù)流圖,概要,基礎數(shù)據(jù)類型 邏輯結構 物理結構 數(shù)據(jù)流圖 注意事項,文檔號(DocNo),內部的來說,Lucene用一個整形(interger)的文檔號來指示文檔。第一個被加入到索引中的文檔就是0號,順序加入的文檔將得到一個由前一個號碼遞增而來的號碼。 只有段內的號碼是相同的,不同段之間不同,因而在一個比段廣泛的上下文環(huán)境中使用這些號碼時,就必須改變它們。標準的技術是根據(jù)每一段號碼多少為每一段分 配一個段號。將段內文檔號轉換到段外時,加上段號。將某段外的文檔號轉換到段內時,根據(jù)每段中可能的轉換后號碼范圍來判斷文檔屬于那一段,并減調這一段的 段號。例如有兩個含5個文檔的段合并,那么第一段的段號就
17、是0,第二段段號5。第二段中的第三個文檔,在段外的號碼就是8。 文檔刪除后,連續(xù)的號碼就出現(xiàn)了間斷。這可以通過合并索引來解決,段合并時刪除的文檔相應也刪掉了,新合并而成的段并沒有號碼間斷。,索引日期、數(shù)字,索引日期: 對日期進行范圍搜索, Field.keyword(string,Date)提供了這樣的方法。lucene會把這個日期轉換為string, 值得注意的是這里的日期是精確到毫秒的,可能會有不必要的性能損失, 所以我們也可以把日期自行轉化為YYYYMMDD這樣的形勢,就不用精確到具體時間了,也可以通過File.keyword(Stirng,String) 來索引日期。 索引數(shù)字: 如果數(shù)字只是簡單的數(shù)據(jù),那么可以簡單的把它當字符處理;如果數(shù)字還包含數(shù)值的意義,比如
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療領域合規(guī)管理體系構建
- 醫(yī)療資源優(yōu)化配置與績效考核聯(lián)動
- 醫(yī)療質量成本管控的實踐路徑探索
- 醫(yī)療設備采購價值工程應用案例
- 醫(yī)療設備采購中的成本精細化與價值最大化
- 環(huán)評審批招商對接
- 麻醉科全麻患者床旁鎮(zhèn)痛管理規(guī)范
- 《GBT 21545-2008通信設備過電壓過電流保護導則》專題研究報告深度
- 急救醫(yī)學關鍵技能:突發(fā)事件急救課件
- 醫(yī)學影像診斷入門:中耳乳突炎術后影像課件
- 專題03 基本不等式(期末壓軸專項訓練20題)(原卷版)-25學年高一數(shù)學上學期期末考點大串講(人教A版必修一)
- 檔案管理基本知識課件
- 【MOOC】通信原理-北京交通大學 中國大學慕課MOOC答案
- 臨床硬膜下血腫患者中醫(yī)護理查房
- 正規(guī)裝卸合同范本
- 科研設計及研究生論文撰寫智慧樹知到期末考試答案章節(jié)答案2024年浙江中醫(yī)藥大學
- 2024年江蘇省普通高中學業(yè)水平測試小高考生物、地理、歷史、政治試卷及答案(綜合版)
- 土力學與地基基礎(課件)
- 精神分裂癥等精神病性障礙臨床路徑表單
- 提撈采油安全操作規(guī)程
- 管道安全檢查表
評論
0/150
提交評論