Lucene 8.7.0 版本中doc、tim、tip、tmd材料详解
文件概述
这些文件都是 Lucene 倒排索引(Inverted Index)的核心组成部分:
文件扩展名 | 文件类型 | 主要用途 |
---|---|---|
.doc | Postings Lists | 存储文档ID和词频信息 |
.tim | Term Dictionary | 存储词项字典数据 |
.tip | Term Index | 词项字典的索引文件 |
.tmd | Term Metadata | 词项元数据(8.7版本较少使用) |
1. .doc 文件(Postings Lists)
功能
存储倒排列表的核心数据,包含每个词项(term)对应的文档列表。
存储内容
- 文档ID列表(DocID)
- 词频信息(Term Frequency)
- 跳表指针(Skip Data)
- 文档内的位置信息(如果启用)
数据结构示例
Term "lucene" →DocIDs: [1, 5, 8, 12, 45, 78, ...]Frequencies: [2, 1, 3, 1, 2, 1, ...]Skip Pointers: [→8, →45, ...]
特点
- 使用增量编码(Delta Encoding)压缩文档ID
- 采用VInt变长整数编码节省空间
- 支持跳表(Skip List)加速查询
2. .tim 文件(Term Dictionary)
功能
存储所有唯一词项及其对应的倒排列表指针。
存储内容
- 词项的完整文本
- 指向.doc文件中倒排列表的指针
- 词项统计信息(文档频率等)
- FST(Finite State Transducer)结构
数据组织
Block 1:Terms: ["apple", "application", "apply"]Pointers: [→doc_offset_1, →doc_offset_2, →doc_offset_3]Stats: [df=100, df=50, df=200]
Block 2:Terms: ["banana", "bank", "basic"]...
特点
- 使用前缀压缩减少存储空间
- 按字典序排列词项
- 采用块结构(Block)组织数据
- 使用FST数据结构实现高效前缀搜索
3. .tip 文件(Term Index)
功能
作为.tim文件的索引,提供快速定位词项的能力。
存储内容
- FST索引结构
- 每个Block的起始词项
- Block在.tim文件中的偏移量
- 词项前缀索引
索引结构
FST Root├─ "a" → Block 1 (offset: 0)│ ├─ "ap" → Block 2 (offset: 1024)│ └─ "ar" → Block 3 (offset: 2048)├─ "b" → Block 4 (offset: 3072)└─ "c" → Block 5 (offset: 4096)
查询流程
- 在.tip中通过FST快速定位到Block
- 跳转到.tim文件的相应位置
- 在Block内二分查找具体词项
- 获取指向.doc文件的指针
4. .tmd 文件(Term Metadata)
注意
在Lucene 8.7.0中,.tmd文件不是标准文件,可能是特定配置或自定义实现产生的。
可能的用途
- 存储额外的词项元数据
- 自定义的统计信息
- 特殊的索引扩展数据
文件协作关系
优化特性
1. 压缩技术
- 增量编码:文档ID存储差值
- VInt编码:变长整数压缩
- 前缀压缩:词项共享前缀
- 位压缩:布尔值和标志位
2. 查询优化
- 跳表加速:快速跳过不相关文档
- 块索引:减少磁盘寻址
- FST结构:O(k)复杂度的前缀查询
- 内存映射:利用操作系统缓存
3. 存储效率
原始数据: 100GB
├─ .tim文件: ~5GB (词典)
├─ .tip文件: ~100MB (索引)
├─ .doc文件: ~15GB (倒排表)
└─ 总计: ~20GB (5倍压缩率)
实际应用示例
搜索 “Lucene” 的过程:
- 查找.tip文件:通过FST找到 “L” 开头的Block位置
- 读取.tim文件:在Block中二分查找 “Lucene”
- 获取指针:得到.doc文件中的偏移量
- 读取.doc文件:获取包含 “Lucene” 的所有文档ID
- 返回结果:根据相关性排序返回文档
这种分层索引结构使得Lucene能够在海量数据中实现毫秒级的全文搜索。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920606.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!相关文章
社交网站平台怎么做怎么建设微信网站
0x43 线段树
线段树(Segment Tree)是一种基于分治思想的二叉树结构,用于在区间进行信息统计。与按照二进制位(2的次幂)进行区间划分的树状数组相比,线段树是一种更加通用的结构:
1.线段树的每…
US$289 VVDI2 AUDI and 5th IMMO Functions Authorization Service
VVDI2 AUDI and 5th IMMO Functions Authorization ServiceNotice:VVDI basic function(SV86-C) can not open this now.Tips: No need shipping, after you pay this service, we will open the authorization for yo…
如何给网站做右侧导航桂林市区地图
每个员工都会有自己的档案,主管可以查看在职员工的档案。使用 Java 创建一个员工实体类,然后通过构造方法创建一个名为“王洁”的员工,最后打印出员工档案信息。
1 . 创建 Person 类,在该类中定义个人基本信息属性,并…
网页制作模板的网站那个网站教你做毕设的
使用情景
今天开发上遇到一个搜索的需求,要求可以多选,模糊查询。我首先和前端沟通,前端多选后使用逗号分隔,拼成字符串传输给我,我后端再进行具体的处理。
具体处理
初步构想
由于需要查询的字段也是一个长的字符…
非线性规划、最优控制与多目标优化
一、非线性规划(Nonlinear Programming,NLP)
1、线性规划LP:运筹学中,对于资源分配、计划调度等问题,有数学公式可以求解,数学公式的目标函数与所有约束条件均为线性2、非线性函数:二次函数、指数函数、三角函…
记录,结构,枚举,ref,in和out 元组
记录
本章前面提到,记录是支持值语义的引用类型。这种类型可以减少你自己需要编写的代码,因为编译器会实现按值比较记录的代码,并提供其他一些特性
不可变类型
记录的一种主要用例是创建不可变类型(不过使用记录也…
清远市企业网站seo东莞市人才招聘网
在基于NT内核的Windows操作系统家族中,Svchost.exe是一个非常重要的进程。很多病毒、木马驻留系统与这个进程密切相关,因此深入了解该进程是非常有必要的。本文主要介绍Svchost进程的功能,以及与该进程相关的知识。 Svchost进程概述…
IDEA/WebStorm 卡顿困难与启动参数调优指南
IDEA/WebStorm 卡顿困难与启动参数调优指南2025-09-28 11:45
tlnshuju
阅读(0)
评论(0) 收藏
举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: blo…
Python抖音直播间实时数据获取方案:弹幕、礼物与互动消息全解析 - 教程
pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …
OpenLayers地图交互 -- 章节十三:拖拽旋转交互详解 - 实践
pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …
Gitee企业版MCP Server:开启AI驱动的企业研发新时代
Gitee企业版MCP Server:开启AI驱动的企业研发新时代
在数字化转型浪潮席卷全球的当下,Gitee再次引领技术革新,正式推出企业版MCP Server——Gitee MCP Server For Enterprise。这一专为企业用户打造的AI协作解决方案…
Flutter - dart 语言从入门到精通 - 教程
Flutter - dart 语言从入门到精通 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…
建站之星模板制作营销型企业网站制作
隐藏层
该模型通过单个仿射变换将我们的输入直接映射到输出,然后进行softmax操作。 如果我们的标签通过仿射变换后确实与我们的输入数据相关,那么这种方法确实足够了。 但是,仿射变换中的线性是一个很强的假设。
线性模型可能会出错
例如&…
临沂在线做网站智能路由器 建网站
迭代
思路: 暴力模拟迭代;假设从第 idx 个加油站开始,使用一个变量对行驶的加油站个数计数,如果最后行驶的个数为 size,则是可行的;否则,行驶过的加油站都不可行;(加快更…
Deepoc具身智能模型:为传统电厂巡检机器人注入“灵魂”与“智慧” - 实践
Deepoc具身智能模型:为传统电厂巡检机器人注入“灵魂”与“智慧” - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family…
Win11共享打印0x0000bc4,三步解决共享难题
在多人办公场景中,共享打印机能大幅提升效率,但Win11系统常因驱动、网络或权限问题出现错误,其中Win11共享打印0x0000bc4最为常见。这个错误通常提示找不到打印机,本文将给大家分享三种解决方法,帮你恢复打印机共…
kafka-日志收集高效的平台部署任务
kafka-日志收集高效的平台部署任务pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&…
Atlas Mapper 教程系列 (7/10):单元测试与集成测试 - 教程
pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …