天天看點

MySQL · 引擎介紹 · Sphinx源碼剖析(二)

在本節中,我将會介紹索引檔案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長度.

繼續閱讀