这是基于开源的sphinx全文检索引擎的架构代码分析,本篇主要描述index索引服务的分析。当前分析的版本 sphinx-2.0.4
存储文档属性,在extern文档信息存储模式下使用。
item | item | item | item | item |
---|---|---|---|---|
docid | attr0 | attr1 | attr mva(spm file position) | … |
item | item | item | item | item | item | item |
---|---|---|---|---|---|---|
attr0 min | attr1 min | … | attr0 max | attr1 max | attr mva max | … |
存储词列表,词id和指向spd文件的指针。
item | item | item | item |
---|---|---|---|
wordid(crc32)或vlb | spd文件偏移的差值 | doc的计数值 | hit的计数值 |
item | item | item |
---|---|---|
checkpoint1 sWord len | sWord | 在文件内的 offset |
存储每个词id可匹配的文档id列表。
item | item | item | item |
---|---|---|---|
docid vlb | hit count | hit field | hit position |
item | item | item | item |
---|---|---|---|
docid vlb | hit count | field mask | hit file(spp) position 差值 |
存储索引头信息。
item0 | item1 | item2 | item3 | item4 |
---|---|---|---|---|
version | bits | docinfo mode | schema | min doc |
item5 | item6 | item7 | item8 | item 9 |
---|---|---|---|---|
ckpoint pos | ckpoint count | total doc | total bytes | index setting |
item10 | item 11 | item12 | item13 |
---|---|---|---|
tokenizer | dictionary | kill list | min max index |
存储kill-lists信息。
存储mva数据
item | item | item |
---|---|---|
docid | A a0,a1,a2 … | B b0,b1,b2 … |
存储字符串属性
存储每个词的命中数。
item | item | item | item | item |
---|---|---|---|---|
wordid0 | docid0 | pos0, pos1, pos2 … | hitcount | field mask |
docid1 | pos0, pos1, pos2 … | hitcount | field mask | |
docid2 | pos0, pos1, pos2 … | hitcount | field mask | |
wordid1 | docid0 | pos0, pos1, pos2 … | hitcount | field mask |
docid1 | pos0, pos1, pos2 … | hitcount | field mask | |
… | … | … | … | … |
当doc切换后存储的第一个是hit position, 后面存储的是差值。
item |
---|
hit position 差值 |
存储字符串属性数据。
sphinx索引分析——文件格式和字典是double array trie 检索树,索引存储 – 多路归并排序,文档id压缩 – Variable Byte Coding
原文:http://www.cnblogs.com/bonelee/p/6251091.html