sphinx索引分析——文件格式和字典是double array trie 检索树,索引存储 – 多路归并排序,文档id压缩 – Variable Byte Coding...

1 概述

这是基于开源的sphinx全文检索引擎的架构代码分析,本篇主要描述index索引服务的分析。当前分析的版本 sphinx-2.0.4

2 index 功能

3 文件表

4 索引文件结构

4.1 spa 文件

存储文档属性,在extern文档信息存储模式下使用。

spa文件格式 => 属性值存储
itemitemitemitemitem
docidattr0attr1attr mva(spm file position)
spa文件格式 => 在文件的末尾存储每个属性的最大最小值
itemitemitemitemitemitemitem
attr0 minattr1 minattr0 maxattr1 maxattr mva max

4.2 spi 文件

存储词列表,词id和指向spd文件的指针。

  • wordid 采用crc32编码
  • 每64个word插入一个检查点,重新开始存储wordid和spd文件偏移的差值
  • 保存doc的计数值,hit的计数值
spi文件格式 => 倒排索引存储
itemitemitemitem
wordid(crc32)或vlbspd文件偏移的差值doc的计数值hit的计数值
spi文件格式 => 文件的末尾存储文件内的检查点信息
itemitemitem
checkpoint1 sWord lensWord在文件内的 offset

4.3 spd 文件

存储每个词id可匹配的文档id列表。

文件格式 => 只有一次命中的时候
itemitemitemitem
docid vlbhit counthit fieldhit position
文件格式 => 多次命中的时候
itemitemitemitem
docid vlbhit countfield maskhit file(spp) position 差值

4.4 sph 文件

存储索引头信息。

格式0
item0item1item2item3item4
versionbitsdocinfo modeschemamin doc
格式1
item5item6item7item8item 9
ckpoint posckpoint counttotal doctotal bytesindex setting
格式2
item10item 11item12item13
tokenizerdictionarykill listmin max index

4.5 spk 文件

存储kill-lists信息。

4.6 spm 文件

存储mva数据

  • 分块存储
  • 多路归并排序,创建spm文件
spm文件格式
itemitemitem
docidA a0,a1,a2 …B b0,b1,b2 …

4.7 sps 文件

存储字符串属性

4.8 spp 文件

4.8.1 第一次扫描创建的命中文件(临时存储命中信息)

存储每个词的命中数。

  • 文件内分块存储
  • 块内同类递增排序,优先级为 wordid > docid > hitpos
  • 在wordid,docid相等的条件下,hitpos差分存储
  • 在wordid相等的条件下docid差分存储
  • wordid差分存储
hit block 的存储结构列表如下
itemitemitemitemitem
wordid0docid0pos0, pos1, pos2 …hitcountfield mask
 docid1pos0, pos1, pos2 …hitcountfield mask
 docid2pos0, pos1, pos2 …hitcountfield mask
wordid1docid0pos0, pos1, pos2 …hitcountfield mask
 docid1pos0, pos1, pos2 …hitcountfield mask

 

4.8.2 最终创建的spp文件格式

当doc切换后存储的第一个是hit position, 后面存储的是差值。

spp文件存储格式
item
hit position 差值

4.9 sps 文件

存储字符串属性数据。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值