在本節中,我将會介紹索引檔案sph的生成,從上一節我們得知sph檔案儲存了sphinx的索引元資訊以及一些索引相關的配置資訊
先來看代碼,其中sph檔案的生成是在csphindex_vln::writeheader這個函數中:
然後按順序來解釋下每一項字段的含義.
前兩個字段index_magic_header和index_format_version分别是magic number和索引版本号
第三個字段use_64bit表示是否使用64位的document和word id(預設是使用).
然後是寫入docinfo,這個字段也就是配置中的docinfo字段(index block中)
接下來将會寫入schema,也就是索引的schema資訊,比如目前索引的字段名,目前需要建立的屬性名等等.
然後是寫入目前索引集的最小doc id(m_umindocid)
接下來是根據docinfo(也就是屬性存儲)的配置來選擇是否寫入行資訊(當docinfo為inline的話,表示attribute value 将會存儲在spd檔案中).
然後是寫入wordlist的checkpoint.
然後是索引的統計資訊(m_itotaldocuments/m_itotalbytes/m_itotaldups).
接下來是寫入對應的索引配置資訊
寫入對應的tokenizer的配置資訊,
寫入dictionary的配置資訊(比如stop word之類).
然後是寫入killlist的size(m_ukilllistsize)
寫入m_iminmaxindex,這個選項也就是表示document size.
寫入regex相關配置(regexp_filter)
最後是寫入對應的schema field長度.