1 概述

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

2 index 功能

3 文件表

4 索引文件结构

4.1 spa 文件

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

spa文件格式 => 属性值存储
item item item item item
docid attr0 attr1 attr mva(spm file position)
spa文件格式 => 在文件的末尾存储每个属性的最大最小值
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的计数值
spi文件格式 => 倒排索引存储
item item item item
wordid(crc32)或vlb spd文件偏移的差值 doc的计数值 hit的计数值
spi文件格式 => 文件的末尾存储文件内的检查点信息
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 文件

存储索引头信息。

格式0
item0 item1 item2 item3 item4
version bits docinfo mode schema min doc
格式1
item5 item6 item7 item8 item 9
ckpoint pos ckpoint count total doc total bytes index setting
格式2
item10 item 11 item12 item13
tokenizer dictionary kill list min max index

4.5 spk 文件

存储kill-lists信息。

4.6 spm 文件

存储mva数据

  • 分块存储
  • 多路归并排序,创建spm文件
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差分存储
hit block 的存储结构列表如下
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, 后面存储的是差值。

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

4.9 sps 文件

存储字符串属性数据。

转载于:https://www.cnblogs.com/bonelee/p/6251091.html

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

  1. Python分析并爬取起点中文网的章节数据,保存为txt文档

    如题,分析起点中文网,并提取出来章节链接,保存为txt文档. 代码仅供交流使用,请勿用作商业用途,如有违规,请联系删除 一,分析 1.打开带有章节的链接,例如:(随便选的一篇文章) 2.打开浏览器的抓 ...

  2. 索引重建的必要性与影响 (文档 ID 1525787.1)

    索引重建的必要性与影响 (文档 ID 1525787.1) Index Rebuild, the Need vs the Implications (文档 ID 989093.1) 索引重建的必要性与 ...

  3. ES 5.x bulk update重复的文档ID性能低下分析

    目前很多公司将ES作为数据库数据的索引,将多个数据库的数据同步到ES是非常常见的应用场景.所以感觉问题可能会困扰不止一个用户,而官方的文档没有对update底层机制作了详细的说明,特将该问题整理成文章 ...

  4. sphinx 源码阅读之分词,压缩索引,倒排——单词对应的文档ID列表本质和lucene无异 也是外部排序再压缩 解压的时候需要全部扫描doc_ids列表偏移量相加获得最终的文档ID...

    转自:http://github.tiankonguse.com/blog/2014/12/03/sphinx-token-inverted-sort.html 外部排序 现在我们的背景是有16个已经 ...

  5. linux如何扫描文件格式,如何使用SANE最有用的命令在Linux中扫描文档

    简易扫描仪访问( 这是充分利用 立即行动起来 可以使用程序包管理器来安装API.例如,在Debian系统中: sudo apt install sane -安装并提供命令行应用程序scanimage. ...

  6. Android用Double Array Trie (双数组)实现关键字的搜索

    我们项目本想用这种方法做Android的搜索提示用,也就是,在搜索框中输入一个关键字,下面自动检索出和输入的关键词匹配的关键字,提示用户,用户可以方便的从下面的提示中选择出自己想要的关键字.提高用户体 ...

  7. 计算机教学现状的论文,计算机专业教学现状分析与对策-计算机病毒论文-计算机论文(14页)-原创力文档...

    计算机专业教学现状分析与对策 摘要:在高职院校学校数量及人数急剧膨胀的背景下,针对近些年来高职计算机专业"热门不热"."毕业即失业"等现象,从一线教师的角度出发 ...

  8. Elasticsearch压缩索引——lucene倒排索引本质是列存储+使用嵌套文档可以大幅度提高压缩率...

    注意:由于是重复数据,词法不具有通用性!文章价值不大! 摘自:https://segmentfault.com/a/1190000002695169 Doc Values 会压缩存储重复的内容. 给定 ...

  9. sphinx索引分析续

    4.10 同义词文件/Synonym 同义词文件格式 from => to AT &T => AT&T AT & T => AT & T standa ...

最新文章

  1. [Lintcode]41. Maximum Subarray/[Leetcode]53. Maximum Subarray
  2. 博后招募 | 西湖大学工学院蓝振忠深度学习实验室招募博士后
  3. 数据库系列之mysql 自定义函数function,函数和存储过程的区别
  4. Excel2013打开提示 文件格式和扩展名不匹配。文件可能已损坏或不安全。除非您信任其来源,否则请勿打开。是否仍要打开它?...
  5. vns可变领域_技师可变工程师!
  6. LeetCode Contains Duplicate III
  7. ajax post提交数据_JavaEE学习——为什么get请求方式比post请求方式效率高
  8. SSM框架开发web项目系列(四) MyBatis之快速掌握动态SQL
  9. 【ML小结6】关联分析与序列模式关联分析
  10. 大数据项目开发进度(实时更新)
  11. 第九届蓝桥杯国赛C++B组口胡题解
  12. ts类中的private和protected
  13. 基站定位(Google API)
  14. 雷军:《我十年的程序员生涯》系列之一:我的程序人生路
  15. 美业SaaS的创业分享之[技术]:产品研发和架构在组织管理中的挑战
  16. 微信特殊字符包括颜文字、表情的后台存储及前端展示方法
  17. 为什么苹果日历不能设置日程_苹果日历怎么用 苹果日历使用方法介绍
  18. 基于Jsp+Servlet的户籍管理系统(JavaWeb毕业设计、课程设计)
  19. 电子书 VS 纸质书
  20. linux系统及应用ppt下载地址,[计算机软件及应用]Linux操作系统.ppt

热门文章

  1. linux zsh命令行vim命令补齐,Linux使用zsh提高效率的5条建议
  2. 支付宝服务商子商户_支付宝服务商新功能,无需商家花钱的消费券怎么参与
  3. python类是实例的工厂_Python设计模式之工厂方法模式实例详解
  4. python第三方库使用文档_python 的第三方库的使用
  5. java最最长的错误,Java开发中遇到最多的异常是什么?最后一个最多最难!
  6. 十大被低估的python库_小白必读!十大被低估的Python自带库!
  7. java课程设计日历记事本代码,已开源
  8. 【django轻量级框架】用Mysql的各种项目响应速度慢?一招解决!
  9. 常见OJ评判结果对照表
  10. python写了代码_Python写代码的用法建议