?
Sphinx使用的文件包括 “sph”, “spa”, “spi”, “spd”, “spp”, “spm” ,還有鎖文件(.spl)。其中sph是系統的配置文件。其它則為索引文件。
l Spi 文件:保存WordId及指向此WordId對應的文檔信息在spd文件的指針。Spi文件在檢索程序啟動時完全加載入內存。Spi文件是分塊的,塊內排序,塊之間也排序。分塊的目的應該是為了快速檢索到WordId,因為Spi中的WordId是變長壓縮的,索引需要先在塊級別做二分定位,再在快內解壓縮查找。
文件結構,每塊中結構,wordId實際存儲的是差值
WordId | SpdFilePointer | DocNum | HitNum |
2 Spd文件:
文件結構
DocID | [DocInfo] | HitFilePointer | FieldNum | HitNum |
3 Spp文件
文件結構
HitPos |
4 Spa文件:存儲DocInfo的文件,檢索程序啟動時會把此文件加載如內存,sphinx可以指定DocInfo的存儲方式,
① 存儲到spd文件中(InLine)
②. 另外單獨存儲。指定此,就會生成spa文件
文件結構:
DocId | DocInfo |
5 Spm文件:在DocInfo中,有一種特殊的屬性,叫MVA,多值屬性。Sphinx對此屬性特殊處理,需要存儲在spm文件中。檢索程序啟動時會把此文件加載如內存。此(MVA)屬性在DocInfo對應位置存儲其在此文件中的字節偏移量。
文件結構:
DocId | Anum,A1,A2,…,An | Bnum,B1,B2,…,Bn | … |
?
?
由于在第一趟掃描過程中會出現WordID相同的不同Hits(不同文檔或者不同位置不同字段),二趟前會根據WordID排序,WordID相同的Hits會連續出現并合并(合并到第一次出現的相同WordID中)