Solr 3.5 のexampleディレクトリの以下で

% java -jar start.jar

した際の index fileの形式を見る. その2.

indexはまっさらにしている. 前回の続きではない.

2件update&commit


curl http://localhost:8983/solr/update?commit=true -H "Content-Type: text/xml" --data-binary '<add><doc><field name="id">abc</field></doc><doc><field name="id">abcde</field></doc></add>'

ファイル

  • segments.gen
  • segments_2
  • _0.fdt
  • _0.fdx
  • _0.fnm
  • _0.frq
  • _0.nrm
  • _0.tii
  • _0.tis
  • segments* については略. SegSize は 2 になっている.
  • _0f.fnm, *.nrm, *.tii も1件と同じなので省略

_0.fdt


0000000 00 00 00 03 01 00 00 03 61 62 63 01 00 00 05 61
0000020 62 63 64 65
0000024
  • Format
    • 00 00 00 03
      • org.apache.lucene.index.FieldsWriter.FORMAT_LUCENE_3_2_NUMERIC_FIELDS
  • FieldCount
    • 01
  • FieldNum
    • 00
  • Bits
    • 00
  • Value
    • 03 61 62 63
      • "abc"
  • FieldCount
    • 01
  • FieldNum
    • 00
  • Bits
    • 00
  • Value
    • 05 61 62 63 64 65
      • "abcde"

_0f.fdx


0000000 00 00 00 03 00 00 00 00 00 00 00 04 00 00 00 00
0000020 00 00 00 0b
0000024
  • Format
    • 00 00 00 03
      • org.apache.lucene.index.FieldsWriter.FORMAT_LUCENE_3_2_NUMERIC_FIELDS
  • FieldValuesPosition
    • 00 00 00 00 00 00 00 04
  • FieldValuesPosition
    • 00 00 00 00 00 00 00 0b

_0.frq


0000000 00 01
0000002
  • TermFreq(DocDelta)
    • 00
  • TermFreq(DocDelta)
    • 01
  • FormatPostingsDocsWriter 中で lastDocIDの初期値は0.
    • 後述の順序をかえたものと比較すると, 各ポスティングリストの中で初期化されていることがわかる

_0.tis



0000000 ff ff ff fc 00 00 00 00 00 00 00 02 00 00 00 80
0000020 00 00 00 10 00 00 00 0a 00 03 61 62 63 00 01 00
0000040 00 03 02 64 65 00 01 01 00
0000051
  • TIVersion
    • ff ff ff fc
      • org.apache.lucene.index.TermInfosWriter.FORMAT_VERSION_UTF8_LENGTH_IN_BYTES
  • IndexTermCount
    • 00 00 00 00 00 00 00 02
  • IndexInterval
    • 00 00 00 80
  • SkipInterval
    • 00 00 00 10
  • MaxSkipLevels(ここまでtiiと同じ)
    • 00 00 00 0a
  • TermInfo(Term<PrefixLength, Suffix, FieldNum>, DocFreq, FreqDelta, ProxDelta, [SkipDelta])
    • 00 03 61 62 63 00 01 00 00
      • Suffix : 03 61 62 63 (abc), FieldNum: 0, DocFreq: 1, SkipDeltaなし

  • TermInfo(Term<PrefixLength, Suffix, FieldNum>, DocFreq, FreqDelta, ProxDelta, [SkipDelta])
    • 03 02 64 65 00 01 01 00
      • PrefixLength: 3, Suffix : 02 64 65 (de), FieldNum: 0, DocFreq: 1, FreqDelta: 1, SkipDeltaなし
      • FreqDelta は *.frq ファイルでの Delta

2件update&commit その2


curl http://localhost:8983/solr/update?commit=true -H "Content-Type: text/xml" --data-binary '<add><doc><field name="id">abcde</field></doc><doc><field name="id">abc</field></doc></add>'

内容は同じだが順序が異なる

ファイル

  • segments.gen
  • segments_2
  • _0.fdt
  • _0.fdx
  • _0.fnm
  • _0.frq
  • _0.nrm
  • _0.tii
  • _0.tis
  • 上記のものと以下が異なる (segments_2 も異なるが, これは時間とチェックサムが含まれているから)
    • _0.fdt
    • _0.fdx
    • _0.frq

_0.fdt


0000000 00 00 00 03 01 00 00 05 61 62 63 64 65 01 00 00
0000020 03 61 62 63
0000024

storeされるデータの順序が変わっている

_0f.fdx


0000000 00 00 00 03 00 00 00 00 00 00 00 04 00 00 00 00
0000020 00 00 00 0d
0000024

_0.frq



0000000 01 00
0000002
  • TermFreq(DocDelta)
    • 01
  • TermFreq(DocDelta)
    • 00

メンバーのみ編集できます