隨筆 - 17  文章 - 84  trackbacks - 0
          <2007年6月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          1234567

          如非特別說明,所有文章均為原創(chuàng)。如需引用,請注明出處
          Email:liangtianyu@gmail.com
          MSN:terry.liangtianyu@hotmail.com

          常用鏈接

          留言簿(4)

          隨筆分類(12)

          隨筆檔案(17)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 51902
          • 排名 - 962

          最新評論

          閱讀排行榜

          評論排行榜

            Lucene 2.10索引文件:

          Term:項。為分詞后最小單位,具體和使用的分析器有關,Lucene內置為單字。

          Field:域。相當于數據庫表的字段。

          Document:文檔。域信息的集合。

          Segment:段。一個完整定1索引。

           

          文件名稱

          后綴名稱

          說明

          segments_N

           

          段,表示一個完整獨立的索引;N36進制數

          segments

          .gen

          segments輔助文件,主要用來生成計數

          SegmentName

          .fnm

          域集合信息文件

          SegmentName

          .fdt

          域值信息文件

          SegmentName

          .tis

          項信息文件

          SegmentName

          .tii

          項信息索引文件

          SegmentName

          .frq

          項頻數文件

          SegmentName

          .prx

          項位置信息文件

          SegmentName

          nrm

          標準化因子文件

          SegmentName

          .tvx

          文檔信息索引文件

          SegmentName

          .tvd

          文檔信息文件

          SegmentName

          ..tvf

          每個域項向量信息文件

          備注

          SegmentName_NN36進制數


          一.          
          Lucene原始存儲數據類型(Primitive Types

           

          類型名稱

          說明

          Byte

          8 byte

          UInt32

          32 byte四字節(jié)無符號整型,高位優(yōu)先

          UInt64

          64byte八字節(jié)無符號整型,高位優(yōu)先

          VInt

          可變長度整型。0-127單字節(jié),128-16383兩字節(jié),類推

          Chars

          UNICODE字符串

          String

          寫入格式為:VIntChars,字符串長度加字符串

           

          二.           Lucene索引文件

          1.  Segments

          文件名稱:segments_NN36進制數。

           

          說明:在一個索引目錄中,至少存在一個Segments文件,但可索引活動的只會有一個:N值最大的。其他的Segments文件可能為臨時文件,一般情況是索引修改進程沒有完成。

           

          格式:FormatVersionNameCounterSegCount<SegNameSegSizeDelGenHasSingleNormFileNumFieldNormGenNumFieldIsCompoundFile>SegCount

          FormatNameCounterSegCountSegCountSegSizeNumFieldUInt32

          VersionDelGenNormGenUInt64

          SegNameString

          IsCompoundHasSingleNormFileByte

           

          格式說明:Format = SegmentInfos.FORMAT_SINGLE_NORM_FILE = -2Version當前時間與UTC時間的差值的毫秒數,每次對索引進行修改時會變化;SegName是所有索引生成文件的前綴;SegSize是當前Segment中包含的Document的數量;

           

          示例:

          FF FF FF FDFOMAT = -2UInt32

          00 00 01 13 29 30 B6 33Version = 1181807064627UInt64

          00 00 00 01NameCount = 1UInt32

          00 00 00 01SegmentCount = 1UInt32

          02SegmentNamePrefixLength = 2VInt

          5F 30SegmentName = _0Chars

          00 00 00 01SegSize = 1UInt32

          FF FF FF FF FF FF FF FFDelGen = -1UInt64

          01HasSingleNormFile = 1Byte

          FF FF FF FFNumField = -1UInt32

          FFIsCompoundFile = -1Byte

           

          2.1版本中還會生成segment.gen文件,主要保存了索引計數,格式為:VersionSegmentInfos.LOCKLESS = -2),GenerationGeneration

           

          示例:

           

          FF FF FF FEVersion = -2UInt32

          00 00 00 00 00 00 00 02Generation = 2UInt64

          00 00 00 00 00 00 00 02Generation = 2UInt64

           

          2.  Field Info

          文件名稱:SegmentName.fnm

           

          說明:保存了所有Field的名稱。

           

          格式:FieldCount<FieldNameFieldBits>FieldCount

          FieldCountVInt

          FieldNameString

          FieldBitsByte

           

          格式說明:

           

          示例:

           

          01FieldCount = 1VInt

          04FieldNamePrefixLength = 4VInt

          49 6E 66 6FFieldName = Info”,Chars

          01Bits = 1Byte

           

          3.  Stored Field Index

          文件名稱:SegmentName.fdx

           

          說明:保存了每個DocumentField Data的地址指針

           

          格式:<FieldValuesPosition>SegSize

          FieldValuesPositionUInt64

           

          格式說明:

           

          示例:

           

          00 00 00 00 00 00 00 00FieldValuesPosition = 0UInt64

           

          4.  Stroed Field Data

          文件名稱:SegmentName.fdt

           

          說明:保存了每個Document的需要存儲的Field數據。

           

          格式:<DocFieldData>SegSize

          DocFieldDataFieldCount<FieldNumBitsValue>FieldCount

          FieldCountVInt

          FieldNumVint

          BitsByte

          ValueString | BinaryValue(取決于Bits

          BinaryValueValueSize<Byte>^ValueSize

          ValueSizeVInt

           

          格式說明:

           

          示例:

           

          01FieldCount = 1VInt

          00FieldNum = 0VInt

          01Bits = 1Byte

          17FieldValuePrefixLength = 23VInt

          49 20 77 72 69 74 65 20 61 20 6C 65 74 74 65 72 20 6C 65 74 74 65 72Value = I write a letter letter”,Chars

           

          5.  Term Info Index

          文件名稱:SegmentName.tii

           

          說明:保存了所有Term Inofs.its)文件的索引間隔條目。

           

          格式:TIVersionIndexTermCountIndexIntervalSkipIntervalaMaxSkipLevelsTermIndices

          TIVersionUInt32

          IndexTermCountUInt64

          IndexIntervalUInt32

          SkipIntervalUInt32

          TermIndeices<TermInfoIndexDelta>IndexTermCount

          IndexDeltaVInt

           

          格式說明:

           

          示例:

           

          FF FF FF FETIVersion = -2UInt32

          00 00 00 00 00 00 00 01TermCount = 1UInt64

          00 00 00 08IndexInterval = 128UInt32

          00 00 00 10SkipInterval = 16UInt32

          00MaxSkipLevels = 0Byte

           

          6.  Term Infos

          文件名稱:SegmentName.tis

           

          說明:存儲了所有Term的信息。

           

          格式:TIVersionIndexTermCountIndexIntervalSkipIntervalaMaxSkipLevelsTIVersionUInt32

          IndexTermCountUInt64

          IndexIntervalUInt32

          SkipIntervalUInt32

          MaxSkipLevelsVInt

          TermInfos<TermDocFreqFreqDeltaProxDeltaSkipDelta>TermCount

          Term<PriefixLengthSuffixFieldNum>

           

          格式說明:Term按照字典順序排序;Term的內容是可以共享的。例如:上一個Term為“bone”,當前Term為“boy”,則當前的TemrPrefixLength2Suffix為“y”。

           

          示例:

           

          FF FF FF FETIVersion = -2UInt32

          00 00 00 00 00 00 00 01TermCount = 1UInt64

          00 00 00 08IndexInterval = 128UInt32

          00 00 00 10SkipInterval = 16UInt32

          00MaxSkipLevels = 0Byte

          01TermTextPrefixLength = 1VInt

          69TermText = i”,Chars

          00FieldNumber = 0VInt

          01DocFreq = 1VInt

          00FreqDelta = 0VInt

          00ProxDelta = 0VInt

          00SkipDelta = 0Vint

           

          以下Term類似

           

          7Frequencies File

          文件名稱:SegmentName.frq

           

          說明:

           

          格式:

           

          格式說明:

           

          示例:

           

          8. Positions File

          文件名稱:SegmentName.prx

           

          說明:保存了每個TermDocument中的位置集合。

           

          格式:

           

          格式說明:

           

          示例:

           

          9.TermVectors Iindex File

          文件名稱:SegmentName.tvx

           

          說明:保存了在.tvd中的文檔數據的指針。

           

          格式:TVXVersion<DocumentPosition>NumDocs

          TVXVersionUInt32

          DcoumentPositionUInt64

           

          格式說明:

           

          示例:

           

          00 00 00 02TVXVersion = 2UInt32

          00 00 00 00 00 00 00 04DocumentPosition = 4UInt64

           

           

          10.Term Vectors Document

          文件名稱:SegmentName.tvd

           

          說明:

           

          格式:TVDVersion<NumFieldsFieldNumsFieldPositions>NumDocs

          TVDVersionUInt32

          NumFieldsVInt

          FieldNums<FieldNumDelta >NumFields

          FieldPositionVInt

           

          格式說明:

           

          示例:

           

          00 00 00 02TVDVersion = 2UInt32

          01NumFields = 1VInt

          00FieldNumDelta = 0VInt

          04FieldPosition = 4VInt

           

          11.Term Vectors Field

          文件名稱:SegmentName.tvf

           

          說明:

           

           

          格式:TVFVersion<NumTermsPosition/OffsetTermFreqs>NumFields

          TVFVersionUInt32

          NumTermsVInt

          Position/OffsetByte

          TermFreqs<TermTextTermFreqPositions/Offsets>NumTerms

          TermText<PrefixLengthSuffix>

          PrefixLengthVInt

          SuffixChars

          TermFreqVInt

          Position<VInt>TermFreq

          Offsets<VIntVInt>TermFreq

           

          格式說明:

           

          示例:

           

          00 00 00 02TVFVersion = 2UInt32

          03NumTerms = 3VInt

          00

          00

          01TermTextPrefixLength = 1VInt

          69TermText = i”,Chars

          01TermFreq = 1VInt

          00Position/Offset = 0VInt

          06TermTextPrefixLength = 6VInt

          6C 65 74 74 65 72TextText = letter”,VInt

          02TermFreq = 2VInt

          00Position/Offset = 0VInt

          05TermTextPrefixlength = 5VInt

          77 72 69 74 65TermText = write”,Chars

          01Position/Offset = 1VInt

           

          12.Compound File

          文件名稱:SegmentName.cfs

           

          說明:當采用復合文件建立索引時,所有索引文件會保存在一個.cfs文件內。

           

          格式:FileCount<DataOffsetFileName>FielCountFileDataFielCount

          FielCountVInt

          DataOffsetUInt64

          FileNameString

          FielData:文件原始數據(raw file data

           

          格式說明:

           

          示例:

           

          0BFileCount = 8VInt

          00 00 00 00 00 00 00 A6DataOffset = 166UInt64

          06FileNamePrefixLength = 6VInt

          5F 30 2E 66 6E 6DFileName = _0.fnm”,Chars

          根據文件數據偏移量(DataOffset 166,可以知道字段信息文件(Field Info)“_0.fnm”的數據存儲起始位置在167處。其他文件類
          posted on 2007-06-14 14:45 Terry Liang 閱讀(2506) 評論(3)  編輯  收藏 所屬分類: Lucene 2.1研究

          FeedBack:
          # re: Lucene 2.1研究:文件存儲 2007-06-15 08:56 good
          good.............  回復  更多評論
            
          # re: Lucene 2.1研究:文件存儲 2007-06-16 01:11 geszjava
          thanks  回復  更多評論
            
          # re: Lucene 2.1研究:文件存儲 2007-08-13 14:38 web
          兄臺,我對lucene的高位優(yōu)先一直沒有搞太明白,是否數據先寫到高位,高位被占滿然后再寫低位呢?

          DocumentWriter.java 里面有這段代碼:

          if (f == 1) // optimize freq=1
          freq.writeVInt(1); // set low bit of doc num.
          else {
          freq.writeVInt(0); // the document number
          freq.writeVInt(f); // frequency in doc
          }

          想知道最后寫出來的結果是啥樣子的。
          萬望指教,謝謝!

          還有l(wèi)ucene里面的文檔號是遞增的,請問是在什么地方體現的呢?

            回復  更多評論
            
          主站蜘蛛池模板: 双江| 高雄市| 通榆县| 柳河县| 宁津县| 珲春市| 乡宁县| 翼城县| 彰化市| 嘉峪关市| 建始县| 安国市| 琼中| 马山县| 安溪县| 潞城市| 阿鲁科尔沁旗| 平安县| 涞源县| 共和县| 饶平县| 鄯善县| 高邮市| 平昌县| 保亭| 黑龙江省| 垦利县| 从江县| 彭水| 宁强县| 湟源县| 青海省| 都江堰市| 石林| 手机| 开阳县| 莱阳市| 普宁市| 东港市| 赣州市| 石台县|