sphinx索引分析——文件格式和字典是double array trie 检索树,索引存储 – 多路归并排序,文档id压缩 – Variable Byte Coding...
1 概述
这是基于开源的sphinx全文检索引擎的架构代码分析,本篇主要描述index索引服务的分析。当前分析的版本 sphinx-2.0.4
2 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 文件
存储字符串属性数据。
转载于:https://www.cnblogs.com/bonelee/p/6251091.html
sphinx索引分析——文件格式和字典是double array trie 检索树,索引存储 – 多路归并排序,文档id压缩 – Variable Byte Coding...相关推荐
- Python分析并爬取起点中文网的章节数据,保存为txt文档
如题,分析起点中文网,并提取出来章节链接,保存为txt文档. 代码仅供交流使用,请勿用作商业用途,如有违规,请联系删除 一,分析 1.打开带有章节的链接,例如:(随便选的一篇文章) 2.打开浏览器的抓 ...
- 索引重建的必要性与影响 (文档 ID 1525787.1)
索引重建的必要性与影响 (文档 ID 1525787.1) Index Rebuild, the Need vs the Implications (文档 ID 989093.1) 索引重建的必要性与 ...
- ES 5.x bulk update重复的文档ID性能低下分析
目前很多公司将ES作为数据库数据的索引,将多个数据库的数据同步到ES是非常常见的应用场景.所以感觉问题可能会困扰不止一个用户,而官方的文档没有对update底层机制作了详细的说明,特将该问题整理成文章 ...
- sphinx 源码阅读之分词,压缩索引,倒排——单词对应的文档ID列表本质和lucene无异 也是外部排序再压缩 解压的时候需要全部扫描doc_ids列表偏移量相加获得最终的文档ID...
转自:http://github.tiankonguse.com/blog/2014/12/03/sphinx-token-inverted-sort.html 外部排序 现在我们的背景是有16个已经 ...
- linux如何扫描文件格式,如何使用SANE最有用的命令在Linux中扫描文档
简易扫描仪访问( 这是充分利用 立即行动起来 可以使用程序包管理器来安装API.例如,在Debian系统中: sudo apt install sane -安装并提供命令行应用程序scanimage. ...
- Android用Double Array Trie (双数组)实现关键字的搜索
我们项目本想用这种方法做Android的搜索提示用,也就是,在搜索框中输入一个关键字,下面自动检索出和输入的关键词匹配的关键字,提示用户,用户可以方便的从下面的提示中选择出自己想要的关键字.提高用户体 ...
- 计算机教学现状的论文,计算机专业教学现状分析与对策-计算机病毒论文-计算机论文(14页)-原创力文档...
计算机专业教学现状分析与对策 摘要:在高职院校学校数量及人数急剧膨胀的背景下,针对近些年来高职计算机专业"热门不热"."毕业即失业"等现象,从一线教师的角度出发 ...
- Elasticsearch压缩索引——lucene倒排索引本质是列存储+使用嵌套文档可以大幅度提高压缩率...
注意:由于是重复数据,词法不具有通用性!文章价值不大! 摘自:https://segmentfault.com/a/1190000002695169 Doc Values 会压缩存储重复的内容. 给定 ...
- sphinx索引分析续
4.10 同义词文件/Synonym 同义词文件格式 from => to AT &T => AT&T AT & T => AT & T standa ...
最新文章
- [Lintcode]41. Maximum Subarray/[Leetcode]53. Maximum Subarray
- 博后招募 | 西湖大学工学院蓝振忠深度学习实验室招募博士后
- 数据库系列之mysql 自定义函数function,函数和存储过程的区别
- Excel2013打开提示 文件格式和扩展名不匹配。文件可能已损坏或不安全。除非您信任其来源,否则请勿打开。是否仍要打开它?...
- vns可变领域_技师可变工程师!
- LeetCode Contains Duplicate III
- ajax post提交数据_JavaEE学习——为什么get请求方式比post请求方式效率高
- SSM框架开发web项目系列(四) MyBatis之快速掌握动态SQL
- 【ML小结6】关联分析与序列模式关联分析
- 大数据项目开发进度(实时更新)
- 第九届蓝桥杯国赛C++B组口胡题解
- ts类中的private和protected
- 基站定位(Google API)
- 雷军:《我十年的程序员生涯》系列之一:我的程序人生路
- 美业SaaS的创业分享之[技术]:产品研发和架构在组织管理中的挑战
- 微信特殊字符包括颜文字、表情的后台存储及前端展示方法
- 为什么苹果日历不能设置日程_苹果日历怎么用 苹果日历使用方法介绍
- 基于Jsp+Servlet的户籍管理系统(JavaWeb毕业设计、课程设计)
- 电子书 VS 纸质书
- linux系统及应用ppt下载地址,[计算机软件及应用]Linux操作系统.ppt
热门文章
- linux zsh命令行vim命令补齐,Linux使用zsh提高效率的5条建议
- 支付宝服务商子商户_支付宝服务商新功能,无需商家花钱的消费券怎么参与
- python类是实例的工厂_Python设计模式之工厂方法模式实例详解
- python第三方库使用文档_python 的第三方库的使用
- java最最长的错误,Java开发中遇到最多的异常是什么?最后一个最多最难!
- 十大被低估的python库_小白必读!十大被低估的Python自带库!
- java课程设计日历记事本代码,已开源
- 【django轻量级框架】用Mysql的各种项目响应速度慢?一招解决!
- 常见OJ评判结果对照表
- python写了代码_Python写代码的用法建议