Lucene Index 考察(1)

##概要
Lucene Indexの内部構造を実際検証を通して理解するための内容となります。
Indexについて体系的に理解するには以下の資料をご参照ください。  
[Lucene in Action,Second Edition](http://www.manning.com/hatcher3/)
[Apache Lucene - Index File Formats](http://lucene.apache.org/core/4_10_2/core/org/apache/lucene/codecs/lucene410/package-summary.html)

##前提
二点あります。

* Lucene Indexには全文検索に使われる転置索引の他にもろもろ情報が含まれている
* 物理的にIndexは一つまたは複数のセグメントから構成される
![image](https://cloud.githubusercontent.com/assets/7663531/5431151/55c2a70c-8465-11e4-817c-2251b1ef43fd.png)

##やってみましょう

###初回起動時のIndex
* Solr 4.10.2をInstallして起動(手順略)。

* データディレクトリを確認。

```
$ ls -l $SOLR_HOME/collection1/data
index    <-Indexファイルの格納場所
tlog     <-transaction log(最初は空ファイル)
$ ls -l $SOLR_HOME/collection1/data/index
segments.gen   <-commit pointのセグメント情報を保持
segments_1     <-セグメントの情報、末尾の1はIndexの世代番号
write.lock     <-書き込み時の排他制御用
```

* とりあえず、ファイルの中身を見てみると

```
$ od -c $SOLR_HOME/collection1/data/index/segments_1

0000000    ? 327   l 027  \b   s   e   g   m   e   n   t   s  \0  \0  \0
0000020  003  \0  \0  \0  \0  \0  \0  \0 001  \0  \0  \0  \0  \0  \0  \0
0000040   \0  \0  \0  \0  \0 300   ( 223 350  \0  \0  \0  \0  \0  \0  \0
0000060   \0 205 261 016 253                                            

$ od -X $SOLR_HOME/collection1/data/index/segments.gen
0000000          fdffffff        00000000        01000000        00000000
0000020          01000000        e89328c0        00000000        00000000
0000040          9ddee6fa            
```

###Solrにデータを登録します。
* schema.xml(デフォルトのまま)の定義から必要なフィールドのみ抜粋しますと、

```
   <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
   <field name="name" type="text_general" indexed="true" stored="true"/>
   <field name="manu" type="text_general" indexed="true" stored="true" omitNorms="true"/>
   <field name="cat" type="string" indexed="true" stored="true" multiValued="true"/>
   <field name="price"  type="float" indexed="true" stored="true"/>

 <uniqueKey>id</uniqueKey>
```

* 登録対象データ(xmlファイル)

```
$ cd $SOLR/example/exampledocs
$ cat test1.xml 
<add><doc>
  <field name="id">test1</field>
  <field name="name">Apple</field>
  <field name="manu">Apple Computer Inc.</field>
  <field name="cat">electronics</field>
  <field name="cat">music</field>
  <field name="price">399.00</field>
</doc></add>
```

* データを追加します(add&commit)

```
$ java -jar post.jar test1.xml
$ ls -l $SOLR_HOME/collection1/data/index
_0.fdt
_0.fdx
_0.fnm
_0.nvd
_0.nvm
_0.si
_0_Lucene41_0.doc
_0_Lucene41_0.pos
_0_Lucene41_0.tim
_0_Lucene41_0.tip
segments.gen
segments_2
write.lock
```

コミット後、先頭に\_0が付いたファイルが10個追加されています、これらにより１セグメントが構成されます。  
なお、segments_1からsegments_2に世代が変わっていく様子がうかがえます。

###lukeを使ってIndexを確認してみます
* lukeの導入

```
#まず、Lucene4.xに対応しているtarzanek/lukeを入手します。
$ git clone https://github.com/tarzanek/luke.git
$ cd luke
#次に、Solr導入ディレクトリから以下の関連jarをlib及びlib/solrディレクトリにコピーします。
$ ls -l lib
lucene-analyzers-common-4.10.2.jar
lucene-core-4.10.2.jar
lucene-misc-4.10.2.jar
lucene-queries-4.10.2.jar
lucene-queryparser-4.10.2.jar
$ ls -l lib/solr 
solr-core-4.10.2.jar
solr-solrj-4.10.2.jar
```
* lukeを起動

```
$ java -jar dist/lukeall-4.10.2.jar
```

* lukeのOverview画面から  
Index version 
Index format
commit point: セグメント世代番号
などの情報が確認できます。
![2014-12-18 19 05 03](https://cloud.githubusercontent.com/assets/7663531/5486997/fdc955a4-86ef-11e4-8502-d3d76fe600d5.png)

* lukeのCommits画面から  
commit point情報、
Index File情報
などを確認可能です。
![2014-12-18 19 04 19](https://cloud.githubusercontent.com/assets/7663531/5487011/1605ae2e-86f0-11e4-8fe7-1d3f0de64df7.png)


###各種ファイルの中身を見てみると
* トランザクションログの中身

```
$ od -c $SOLR_HOME/collection1/data/tlog/tlog.0000000000000000000 

0000000  002  \n 002   )   S   O   L   R   _   T   L   O   G   A   '   s
0000020    t   r   i   n   g   s 206   "   i   d   $   n   a   m   e   $
0000040    m   a   n   u   #   c   a   t   %   p   r   i   c   e   )   _
0000060    v   e   r   s   i   o   n   _  \0  \0  \0   8 203   A  \a 024
0000100  244 342   [   = 200  \0  \0 020 006  \b   ? 200  \0  \0 341   %
0000120    t   e   s   t   1 342   %   A   p   p   l   e 343   3   A   p
0000140    p   l   e       C   o   m   p   u   t   e   r       I   n   c
0000160    . 344 202   +   e   l   e   c   t   r   o   n   i   c   s   %
0000200    m   u   s   i   c 345   &   3   9   9   .   0   0 346  \a 024
0000220  244 342   [   = 200  \0  \0  \0  \0  \0   [ 203   D   `   -   S
0000240    O   L   R   _   T   L   O   G   _   E   N   D  \0  \0  \0 021
```

* segments_2をsegments_1と比べると、コミット情報が追加されています。

```
$ od -c $SOLR_HOME/collection1/data/index/segments_2
0000000    ? 327   l 027  \b   s   e   g   m   e   n   t   s  \0  \0  \0
0000020  003  \0  \0  \0  \0  \0  \0  \0 003  \0  \0  \0 001  \0  \0  \0
0000040  001 002   _   0  \t   L   u   c   e   n   e   4   1   0 377 377
0000060  377 377 377 377 377 377  \0  \0  \0  \0 377 377 377 377 377 377
0000100  377 377 377 377 377 377 377 377 377 377  \0  \0  \0  \0  \0  \0
0000120   \0  \0  \0  \0  \0 001 016   c   o   m   m   i   t   T   i   m
0000140    e   M   S   e   c  \r   1   4   1   8   6   5   0   3   0   1
0000160    4   4   8 300   ( 223 350  \0  \0  \0  \0  \0  \0  \0  \0 251
0000200  277   .   c                                  
```

* segments.genを起動直後と比べると、世代番号が1から2へインクリメントされています。

```
$ od -X $SOLR_HOME/collection1/data/index/segments.gen

0000000          fdffffff        00000000        02000000        00000000
0000020          02000000        e89328c0        00000000        00000000
0000040          dcb9f190                    
```

* フィールド値情報です。

```
$ od -c $SOLR_HOME/collection1/data/index/_0.fdt
0000000    ? 327   l 027 030   L   u   c   e   n   e   4   1   S   t   o
0000020    r   e   d   F   i   e   l   d   s   D   a   t   a  \0  \0  \0
0000040  002 200 200 001 002  \0 001  \b   Q 361 001  \0 005   t   e   s
0000060    t   1  \b 005   A   p   p   l   e 030 023  \a  \0 360   -    
0000100    C   o   m   p   u   t   e   r       I   n   c   .   (  \v   e
0000120    l   e   c   t   r   o   n   i   c   s   ( 005   m   u   s   i
0000140    c   3   C   ǀ  **  \0   H  \n   3   9   9   .   0   0   ,   U
0000160    S   D   T 024 244 342   [   = 200  \0  \0 300   ( 223 350  \0
0000200   \0  \0  \0  \0  \0  \0  \0 206   M 351   |
```

* フィールドインデックス情報で、フィールド値へのポインタが含まれます。

```
$ od -c $SOLR_HOME/collection1/data/index/_0.fdx
0000000    ? 327   l 027 031   L   u   c   e   n   e   4   1   S   t   o
0000020    r   e   d   F   i   e   l   d   s   I   n   d   e   x  \0  \0
0000040   \0 002 002 001  \0  \0 001  \0   %  \0 001  \0  \0   { 300   (
0000060  223 350  \0  \0  \0  \0  \0  \0  \0  \0   _ 253   K 225
```

* フィールド情報が記録されています。

```
$ od -c $SOLR_HOME/collection1/data/index/_0.fnm
0000000    ? 327   l 027 022   L   u   c   e   n   e   4   6   F   i   e
0000020    l   d   I   n   f   o   s  \0  \0  \0 002  \v 002   i   d  \0
0000040    Q  \0 377 377 377 377 377 377 377 377  \0  \0  \0 002 035   P
0000060    e   r   F   i   e   l   d   P   o   s   t   i   n   g   s   F
0000100    o   r   m   a   t   .   f   o   r   m   a   t  \b   L   u   c
0000120    e   n   e   4   1 035   P   e   r   F   i   e   l   d   P   o
0000140    s   t   i   n   g   s   F   o   r   m   a   t   .   s   u   f
0000160    f   i   x 001   0 004   n   a   m   e 001 001 020 377 377 377
0000200  377 377 377 377 377  \0  \0  \0 002 035   P   e   r   F   i   e
0000220    l   d   P   o   s   t   i   n   g   s   F   o   r   m   a   t
0000240    .   f   o   r   m   a   t  \b   L   u   c   e   n   e   4   1
0000260  035   P   e   r   F   i   e   l   d   P   o   s   t   i   n   g
0000300    s   F   o   r   m   a   t   .   s   u   f   f   i   x 001   0
0000320  004   t   e   x   t 002 001 020 377 377 377 377 377 377 377 377
0000340   \0  \0  \0 002 035   P   e   r   F   i   e   l   d   P   o   s
0000360    t   i   n   g   s   F   o   r   m   a   t   .   f   o   r   m
0000400    a   t  \b   L   u   c   e   n   e   4   1 035   P   e   r   F
0000420    i   e   l   d   P   o   s   t   i   n   g   s   F   o   r   m
0000440    a   t   .   s   u   f   f   i   x 001   0 004   m   a   n   u
0000460  003 021  \0 377 377 377 377 377 377 377 377  \0  \0  \0 002 035
0000500    P   e   r   F   i   e   l   d   P   o   s   t   i   n   g   s
0000520    F   o   r   m   a   t   .   f   o   r   m   a   t  \b   L   u
0000540    c   e   n   e   4   1 035   P   e   r   F   i   e   l   d   P
0000560    o   s   t   i   n   g   s   F   o   r   m   a   t   .   s   u
0000600    f   f   i   x 001   0  \n   m   a   n   u   _   e   x   a   c
0000620    t 004   Q  \0 377 377 377 377 377 377 377 377  \0  \0  \0 002
0000640  035   P   e   r   F   i   e   l   d   P   o   s   t   i   n   g
0000660    s   F   o   r   m   a   t   .   f   o   r   m   a   t  \b   L
0000700    u   c   e   n   e   4   1 035   P   e   r   F   i   e   l   d
0000720    P   o   s   t   i   n   g   s   F   o   r   m   a   t   .   s
0000740    u   f   f   i   x 001   0 003   c   a   t 005   Q  \0 377 377
0000760  377 377 377 377 377 377  \0  \0  \0 002 035   P   e   r   F   i
0001000    e   l   d   P   o   s   t   i   n   g   s   F   o   r   m   a
0001020    t   .   f   o   r   m   a   t  \b   L   u   c   e   n   e   4
0001040    1 035   P   e   r   F   i   e   l   d   P   o   s   t   i   n
0001060    g   s   F   o   r   m   a   t   .   s   u   f   f   i   x 001
0001100    0 005   p   r   i   c   e 006   Q  \0 377 377 377 377 377 377
0001120  377 377  \0  \0  \0 002 035   P   e   r   F   i   e   l   d   P
0001140    o   s   t   i   n   g   s   F   o   r   m   a   t   .   f   o
0001160    r   m   a   t  \b   L   u   c   e   n   e   4   1 035   P   e
0001200    r   F   i   e   l   d   P   o   s   t   i   n   g   s   F   o
0001220    r   m   a   t   .   s   u   f   f   i   x 001   0 025   p   r
0001240    i   c   e   _   c   _   _   _   _   a   m   o   u   n   t   _
0001260    r   a   w  \a 021  \0 377 377 377 377 377 377 377 377  \0  \0
0001300   \0 002 035   P   e   r   F   i   e   l   d   P   o   s   t   i
0001320    n   g   s   F   o   r   m   a   t   .   f   o   r   m   a   t
0001340   \b   L   u   c   e   n   e   4   1 035   P   e   r   F   i   e
0001360    l   d   P   o   s   t   i   n   g   s   F   o   r   m   a   t
0001400    .   s   u   f   f   i   x 001   0 023   p   r   i   c   e   _
0001420    c   _   _   _   _   c   u   r   r   e   n   c   y  \b 021  \0
0001440  377 377 377 377 377 377 377 377  \0  \0  \0 002 035   P   e   r
0001460    F   i   e   l   d   P   o   s   t   i   n   g   s   F   o   r
0001500    m   a   t   .   f   o   r   m   a   t  \b   L   u   c   e   n
0001520    e   4   1 035   P   e   r   F   i   e   l   d   P   o   s   t
0001540    i   n   g   s   F   o   r   m   a   t   .   s   u   f   f   i
0001560    x 001   0  \a   p   r   i   c   e   _   c  \t  \0  \0 377 377
0001600  377 377 377 377 377 377  \0  \0  \0  \0  \t   _   v   e   r   s
0001620    i   o   n   _  \n   Q  \0 377 377 377 377 377 377 377 377  \0
0001640   \0  \0 002 035   P   e   r   F   i   e   l   d   P   o   s   t
0001660    i   n   g   s   F   o   r   m   a   t   .   f   o   r   m   a
0001700    t  \b   L   u   c   e   n   e   4   1 035   P   e   r   F   i
0001720    e   l   d   P   o   s   t   i   n   g   s   F   o   r   m   a
0001740    t   .   s   u   f   f   i   x 001   0 300   ( 223 350  \0  \0
0001760   \0  \0  \0  \0  \0  \0 250 372 326   k                        
0001772
```

* Normsデータで、ドキュメントとフィールドにおけるlength及びboost情報が含まれます。

```
$ od -c $SOLR_HOME/collection1/data/index/_0.nvd
0000000    ? 327   l 027 021   L   u   c   e   n   e   4   9   N   o   r
0000020    m   s   D   a   t   a  \0  \0  \0  \0 300   ( 223 350  \0  \0
0000040   \0  \0  \0  \0  \0  \0 344 345 316 213
```

* Normsメタデータ情報です。

```
$ od -c $SOLR_HOME/collection1/data/index/_0.nvm
0000000    ? 327   l 027 025   L   u   c   e   n   e   4   9   N   o   r
0000020    m   s   M   e   t   a   d   a   t   a  \0  \0  \0  \0 001 002
0000040   \0  \0  \0  \0  \0  \0  \0   | 002 002  \0  \0  \0  \0  \0  \0
0000060   \0   v 377 377 377 377 017 300   ( 223 350  \0  \0  \0  \0  \0
0000100   \0  \0  \0 347 373 266 034         
```

* SegmentInfoで、セグメントのメタデータが含まれます。

```
$ od -c $SOLR_HOME/collection1/data/index/_0.si
0000000    ? 327   l 027 023   L   u   c   e   n   e   4   6   S   e   g
0000020    m   e   n   t   I   n   f   o  \0  \0  \0 001 006   4   .   1
0000040    0   .   2  \0  \0  \0 001 377  \0  \0  \0  \b  \t   t   i   m
0000060    e   s   t   a   m   p  \r   1   4   1   8   6   5   0   3   0
0000100    1   4   6   7  \n   o   s   .   v   e   r   s   i   o   n 006
0000120    1   0   .   9   .   5 002   o   s  \b   M   a   c       O   S
0000140        X 016   l   u   c   e   n   e   .   v   e   r   s   i   o
0000160    n 006   4   .   1   0   .   2 006   s   o   u   r   c   e 005
0000200    f   l   u   s   h  \a   o   s   .   a   r   c   h 006   x   8
0000220    6   _   6   4  \f   j   a   v   a   .   v   e   r   s   i   o
0000240    n  \b   1   .   7   .   0   _   5   5  \v   j   a   v   a   .
0000260    v   e   n   d   o   r 022   O   r   a   c   l   e       C   o
0000300    r   p   o   r   a   t   i   o   n  \0  \0  \0  \n 006   _   0
0000320    .   f   n   m 021   _   0   _   L   u   c   e   n   e   4   1
0000340    _   0   .   d   o   c 021   _   0   _   L   u   c   e   n   e
0000360    4   1   _   0   .   p   o   s 006   _   0   .   n   v   d 006
0000400    _   0   .   f   d   x 005   _   0   .   s   i 006   _   0   .
0000420    n   v   m 021   _   0   _   L   u   c   e   n   e   4   1   _
0000440    0   .   t   i   m 006   _   0   .   f   d   t 021   _   0   _
0000460    L   u   c   e   n   e   4   1   _   0   .   t   i   p 300   (
0000500  223 350  \0  \0  \0  \0  \0  \0  \0  \0 243   - 017 261 
```

* Frequencies情報で、個々のtermが含まれるドキュメント及びその頻度が記録されます。

```
$ od -c $SOLR_HOME/collection1/data/index/_0_Lucene41_0.doc
0000000    ? 327   l 027 031   L   u   c   e   n   e   4   1   P   o   s
0000020    t   i   n   g   s   W   r   i   t   e   r   D   o   c  \0  \0
0000040   \0 002 002       ! 002   # 004 005 006  \a  \b  \t  \n  \v  \f
0000060   \r 016 017 020 021 022 023 024 025 026 027 030 031 032 033 034
0000100  035 036 037 300   ( 223 350  \0  \0  \0  \0  \0  \0  \0  \0 257
0000120  241 320 005                          
```

* Positions情報で、Indexでtermの出現位置を記録します。

```
$ od -c $SOLR_HOME/collection1/data/index/_0_Lucene41_0.pos
0000000    ? 327   l 027 031   L   u   c   e   n   e   4   1   P   o   s
0000020    t   i   n   g   s   W   r   i   t   e   r   P   o   s  \0  \0
0000040   \0 002  \0 001 002  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000060    e   f 314 001   g 261 002 300   ( 223 350  \0  \0  \0  \0  \0
0000100   \0  \0  \0 336 342   =   [           
```

* Term Dictionaryで、term情報が含まれます。

```
$ od -c $SOLR_HOME/collection1/data/index/_0_Lucene41_0.tim
0000000    ? 327   l 027 025   B   L   O   C   K   _   T   R   E   E   _
0000020    T   E   R   M   S   _   D   I   C   T  \0  \0  \0 004   ? 154
0000040    l 027 033   L   u   c   e   n   e   4   1   P   o   s   t   i
0000060    n   g   s   W   r   i   t   e   r   T   e   r   m   s  \0  \0
0000100   \0 002 200 001 003 031  \v     001 024   R   8   K   3   l  \0
0000120   \0  \0 001 001 002   C  \0 005   %  \v   e   l   e   c   t   r
0000140    o   n   i   c   s 005   m   u   s   i   c 002 001 001 004   C
0000160   \0  \0  \0 003  \r 005   t   e   s   t   1 001 001 002   C  \0
0000200   \a   ' 005   a   p   p   l   e  \b   c   o   m   p   u   t   e
0000220    r 003   i   n   c 006 001  \0 001  \0 001  \0  \t   C   "  \0
0000240   \0 001  \0  \0 001  \0 003   ) 023   A   p   p   l   e       C
0000260    o   m   p   u   t   e   r       I   n   c   . 001 001 002   C
0000300   \0 003  \r 005   a   p   p   l   e 002 001  \0 003   C   %  \0
0000320  003 017 006   `  \f 036 036  \0  \0 001 001 002   C  \0 021   {
0000340   \v     001  \0  \0  \0  \0  \0  \0 002   7   \  \t   (   @  \0
0000360   \0  \0  \0  \0 001 033  \b   0      \0  \0  \0  \0  \0  \0  \a
0000400    8 020  \0  \0  \0  \0  \0 006   @  \b  \0  \0  \0  \0 005   H
0000420  004  \0  \0  \0 004   P 002  \0  \0 003   X 001  \0 020 001  \0
0000440  001  \0 001  \0 001  \0 001  \0 001  \0 001  \0 001  \0 030   C
0000460    &  \0  \0 001  \0  \0 001  \0  \0 001  \0  \0 001  \0  \0 001
0000500   \0  \0 001  \0  \0 001  \0 003  \t 003   U   S   D 002 001  \0
0000520  003   C   .  \0  \v   K 005   a   p   p   l   e  \b   c   o   m
0000540    p   u   t   e   r  \v   e   l   e   c   t   r   o   n   i   c
0000560    s 003   i   n   c 005   m   u   s   i   c  \n 001 001 001  \0
0000600  001  \0 001  \0 001  \0 017   C   /  \0  \0 002  \0  \0 001  \0
0000620   \0 002  \0  \0 001  \0  \n  \n 001 002 222 002 001 001 001  \v
0000640      001 024   R   8   K   3   l  \0  \0  \0  \v     001 024   R
0000660    8   K   3   l  \0  \0  \0 005 002 002 336 002 002 001 001  \v
0000700    e   l   e   c   t   r   o   n   i   c   s 005   m   u   s   i
0000720    c  \0 001 002 316 003 001 001 001 005   t   e   s   t   1 005
0000740    t   e   s   t   1 003 003 002 202 004 003 003 001 002 005   a
0000760    p   p   l   e 003   i   n   c 004 001 002 232 005 001 001 001
0001000  023   A   p   p   l   e       C   o   m   p   u   t   e   r    
0001020    I   n   c   . 023   A   p   p   l   e       C   o   m   p   u
0001040    t   e   r       I   n   c   . 001 001 002 206 006 001 001 001
0001060  002 005   a   p   p   l   e 005   a   p   p   l   e 006 001 002
0001100  302 006 001 001 001 006   `  \f 036 036  \0  \0 006   `  \f 036
0001120  036  \0  \0  \a  \b 002 372 006  \b  \b 001 002  \v     001  \0
0001140   \0  \0  \0  \0  \0 002   7   \ 003   X 001  \0  \b 001 002 236
0001160   \n 001 001 001 002 003   U   S   D 003   U   S   D 002 005 002
0001200  322  \n 006 005 001 002 005   a   p   p   l   e 005   m   u   s
0001220    i   c  \0  \0  \0  \0  \0  \0 001 226 300   ( 223 350  \0  \0
0001240   \0  \0  \0  \0  \0  \0 331  \a 303   u              
```

* Term Indexで、Term Dictionaryへのindex情報が含まれます。  
中で、FST(Finite State Transducers)が使用されている様子が確認できます。

```
$ od -c $SOLR_HOME/collection1/data/index/_0_Lucene41_0.tip
0000000    ? 327   l 027 026   B   L   O   C   K   _   T   R   E   E   _
0000020    T   E   R   M   S   _   I   N   D   E   X  \0  \0  \0 004   ?
0000040  327   l 027 003   F   S   T  \0  \0  \0 004  \0 001 003 002 222
0000060  002  \0  \0  \0  \0  \0 001  \0   ? 327   l 027 003   F   S   T
0000100   \0  \0  \0 004  \0 001 003 002 336 002  \0  \0  \0  \0  \0 001
0000120   \0   ? 327   l 027 003   F   S   T  \0  \0  \0 004  \0 001 003
0000140  003 316 002  \0  \0  \0  \0  \0 001  \0   ? 327   l 027 003   F
0000160    S   T  \0  \0  \0 004  \0 001 003 004 202 002  \0  \0  \0  \0
0000200   \0 001  \0   ? 327   l 027 003   F   S   T  \0  \0  \0 004  \0
0000220  001 003 005 232 002  \0  \0  \0  \0  \0 001  \0   ? 327   l 027
0000240  003   F   S   T  \0  \0  \0 004  \0 001 003 006 206 002  \0  \0
0000260   \0  \0  \0 001  \0   ? 327   l 027 003   F   S   T  \0  \0  \0
0000300  004  \0 001 003 006 302 002  \0  \0  \0  \0  \0 001  \0   ? 154
0000320    l 027 003   F   S   T  \0  \0  \0 004  \0 001 003 006 372 002
0000340   \0  \0  \0  \0  \0 001  \0   ? 327   l 027 003   F   S   T  \0
0000360   \0  \0 004  \0 001 003  \n 236 002  \0  \0  \0  \0  \0 001  \0
0000400    ? 327   l 027 003   F   S   T  \0  \0  \0 004  \0 001 003  \n
0000420  322 002  \0  \0  \0  \0  \0 001  \0 037   8   Q   j 203 001 234
0000440  001 265 001 316 001 347 001 200 002  \0  \0  \0  \0  \0  \0 001
0000460  031 300   ( 223 350  \0  \0  \0  \0  \0  \0  \0  \0   ?   w 264
0000500  213                                            
```

##まとめ
* Indexはセグメントにより構成され、１セグメントは10個ぐらいのファイルの集合となっています。
* セグメントの各種ファイルには様々な情報が格納されています。
* Indexはcommitする度に世帯交代されます。

次回は、rollback, softcommitなどのコマンドによるIndex変化を検証してみようと思います。お楽しみに。
![te02](https://cloud.githubusercontent.com/assets/7663531/5560221/309efd24-8dbe-11e4-947e-a98df650e243.gif)