sphinx索引分析——文件格式和字典是double array trie 检索树,索引存储 – 多路归并排序,文档id压缩 – Variable Byte Coding
2017-01-05 09:07
549 查看
1 概述
这是基于开源的sphinx全文检索引擎的架构代码分析,本篇主要描述index索引服务的分析。当前分析的版本 sphinx-2.0.42 index 功能
3 文件表
4 索引文件结构
4.1 spa 文件
存储文档属性,在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 | … |
4.2 spi 文件
存储词列表,词id和指向spd文件的指针。wordid 采用crc32编码
每64个word插入一个检查点,重新开始存储wordid和spd文件偏移的差值
保存doc的计数值,hit的计数值
item | item | item | item |
---|---|---|---|
wordid(crc32)或vlb | spd文件偏移的差值 | doc的计数值 | hit的计数值 |
item | item | item |
---|---|---|
checkpoint1 sWord len | sWord | 在文件内的 offset |
4.3 spd 文件
存储每个词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 差值 |
4.4 sph 文件
存储索引头信息。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 |
4.5 spk 文件
存储kill-lists信息。4.6 spm 文件
存储mva数据分块存储
多路归并排序,创建spm文件
item | item | item |
---|---|---|
docid | A 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差分存储
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 | |
… | … | … | … | … |
4.8.2 最终创建的spp文件格式
当doc切换后存储的第一个是hit position, 后面存储的是差值。item |
---|
hit position 差值 |
4.9 sps 文件
存储字符串属性数据。相关文章推荐
- mongodb底层存储和索引原理——本质是文档数据库,无表设计,同时wiredTiger存储引擎支持文档级别的锁,MMAPv1引擎基于mmap,二级索引(二级是文档的存储位置信息『文件id + 文件内offset 』)
- sphinx 源码阅读之分词,压缩索引,倒排——单词对应的文档ID列表本质和lucene无异 也是外部排序再压缩 解压的时候需要全部扫描doc_ids列表偏移量相加获得最终的文档ID
- sphinx 源码阅读之分词,压缩索引,倒排——单词对应的文档ID列表本质和lucene无异 也是外部排序再压缩 解压的时候需要全部扫描doc_ids列表偏移量相加获得最终的文档ID
- ES里设置索引中倒排列表仅仅存文档ID——采用docs存储后可以降低pos文件和cfs文件大小
- lucene4.5源码分析系列:lucene默认索引的文件格式-总述
- 对TextFile格式文件的lzo压缩建立index索引
- 利用Python进行数据分析--数据加载、存储与文件格式
- 利用python进行数据分析-数据加载、存储与文件格式2
- 基于Log ASCII Standard格式文件的点云数据存储和检索
- innodb存储引擎之二进制日志文件ROW和STATEMENT格式以及重做日志文件分析与系统恢复详解(未完待续)
- LzoIndexer对TextFile格式文件的lzo压缩建立index索引
- PCM音频文件(.wav)压缩成ADPCM(.wav) ,wav文件分析,wav 文件格式
- flash as3 抓取图片进行jpg编码压缩成jpg的ByteArray格式的二进制数据流发送到php
- 利用python进行数据分析之数据加载存储与文件格式
- PNG文件结构分析(上:了解PNG文件存储格式)
- Lucene文件格式和索引过程分析
- PNG文件结构分析(上:了解PNG文件存储格式)
- B(B-)树、B+树、字典(trie)树、外部多路归并排序、败者树外部排序
- 利用python进行数据分析-数据加载、存储与文件格式1
- Python 数据分析(一) 本实验将学习 pandas 基础,数据加载、存储与文件格式,数据规整化,绘图和可视化的知识