名詞解釋:
document 包含一系列的fields
field是一系列terms的代号
term是一系列的bytes
反向索引:
這個索引存儲了關于這個term的一些統計,為什麼叫做反向索引,因為這個能夠列出包含這個term的所有文檔,這是正常關系的一個逆,正常關系是一個文檔列出裡面有哪些詞。
fields的類型:
一個field能夠被stored,如果這麼設定,他會被儲存到一個非倒排的索引中。
一個field會被用來切詞以友善更好的索引。
segments:
apache的索引包含多個子索引,一個segment是全套的索引,可以被獨立的搜尋。
整個服務的索引會包含好幾個 segments
documents号:
lucene使用一個号來識别每一個document,第一篇加到索引中的文檔号是0,然後依次遞增。
文檔号是會變的,在一個segment中,每一個文檔的文檔号是唯一的。
索引結構概況:
segment_info: 包含這個segment的一些基本資訊,比如這個segment中有多少篇文檔。
Field name:紀錄索引中有哪些field.
Stored field values: 儲存store域的東西,比如,這些東西會随着每一次命中傳回,可以被用文檔号找到。
Term dictionary: 包含所有文檔所有被索引的term的字典,這個字典同樣包括有幾個文檔包括這個term,還有指針指向這個term的tf值和Term Proximity data。
Term Frequency data: 紀錄有幾篇文檔包含這個term,還有這個term在這個文檔中出現的頻率。
Term Proximity data:紀錄這個term 在這個文檔中的位置。
Normalization factors: 用在打分公式中做歸一化用的。
Term Vector: 一個term vector 包含這個term的文字内容和頻率。
Per-document values:跟stored 字段一樣, 這也是能夠通過文檔号來取道的,但是這裡面的東西會被加載到記憶體中供快速讀取。stored域一般是用來存儲這個文檔的簡介的,用來展示,而per-document 會影響打分的一些因素。
Deleted document: 存儲哪些文檔被删除了。
檔案字尾名解釋:
1) Segments file: segments.gen 和 segment_N : 存儲一次送出的資訊。
2) Lock File: write.lock : 寫鎖,防止多個indexWriter 來寫。
3) Segment_info: .si : 存儲一個segment的元資訊, 比如段中包含了哪些檔案。
4) Fields : .fnm : 存儲fields的一些資訊,有多少域,每一個域的名稱以及索引方式。
格式: version | field 數目 | field名字 field flag bit | ......
5) Field index : .fdx : 這個field的位置資訊,即域索引檔案 , 由于每個document儲存的域資訊都不一樣,是以大小也不一樣,需要索引檔案來儲存位置。
格式: field position | field position | field position | ......
6) Field Data : .fdt : 存儲stored field. 一共有 document size個項,每一項儲存一篇文檔的域資訊。
格式: (field count | field num | markbit | field value)(field count | field num | markbit | field value).......
7) Term Dictionary : .tim : 存儲term 的資訊。具體檔案格式首先是詞的數量,設定詞典中每隔interval個詞儲存在Term索引檔案中,跳表的interval,最大層數等資訊,詞典本身應用了 prefix suffix技巧來節省存儲空間。
格式: termcount | indexinterval | skipinterval | maxskiplevel | (prefixLength | suffix | FiendNum | DocFreq | reqDelta | proxDelta | skipDelta ) ......
8) Term index : .tip : 存儲term 的索引資訊。即儲存每隔indexInterval個詞,indexTermCount = TermCount/IndexInterval .
格式: indexTermCount | skipinterval | skipinterval | maxskiplevel | (prefixLength | suffix | FiendNum | DocFreq | reqDelta | proxDelta | skipDelta | indexDelta 在詞典中的偏移量 ) ......
9) Frequencies : .doc : 傳說中的倒排表,共termcount項,每一項都有自己的倒排表,每個倒排表有兩個部分,一部分是倒排表本身,還有一部分是skip list,為了更快的通路定位倒排表中的文檔号和詞頻。每一個跳躍表包括以下資訊,文檔号,payload長度,在.doc中得偏移量,在pos中得偏移量。
10) Position : .pos : 存儲在document中的位置資訊,跟.doc中得倒排表有密切的關系。
格式: TermPositions | ..... | TermPositions
TermPositions -> 第一篇文檔 positions | 第N篇文檔 positions .....
No N positons -> positon | PayloadLength | Payload data
11) Payloads : .pay : 存儲額外的資訊每一個位置資訊的中繼資料和使用者的payloads資訊。
12) Norms : .nvd , .nvm : 編碼存儲打分因素。
13) Per-document values : .dvd, .dvm : 存儲額外的打分資訊和其他一些資訊。
14) Term vector index : .tvx : 包含term offset 在文檔檔案中的資訊, 詞向量索引檔案。有Document size個項,每一項有兩個資訊,第一項是tvd 中此文檔的偏移, 第二項是doucument的第一個域在tvf 中此文檔的偏移,
15) Term vector document : .tvd : 儲存一個文檔中有幾個 term vector . 詞向量文檔檔案,有Document size個項。
格式: (num of field | fieldNumDelta | ......)....
fieldNumDelta 存儲的是這個域在相對于第一個域的偏移。
16) Term vector fields : .tvf : 儲存所有的域,第幾個域到第幾個域是屬于那篇文檔,是由tvx 中的第一個域的偏移量以及tvd中 n-1 個域的偏移量來決定的。
格式: (numTerms | mark bit | TermText | TermFrequency | TermText | TermFrequency).....
17) Deleted document : .del : 紀錄删除的資訊。