Lucene 8.7.0 版本中doc、tim、tip、tmd材料详解

news/2025/9/28 12:01:40/文章来源:https://www.cnblogs.com/slgkaifa/p/19116391

Lucene 8.7.0 版本中doc、tim、tip、tmd材料详解

文件概述

这些文件都是 Lucene 倒排索引(Inverted Index)的核心组成部分:

文件扩展名文件类型主要用途
.docPostings Lists存储文档ID和词频信息
.timTerm Dictionary存储词项字典数据
.tipTerm Index词项字典的索引文件
.tmdTerm 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)

查询流程

  1. 在.tip中通过FST快速定位到Block
  2. 跳转到.tim文件的相应位置
  3. 在Block内二分查找具体词项
  4. 获取指向.doc文件的指针

4. .tmd 文件(Term Metadata)

注意

在Lucene 8.7.0中,.tmd文件不是标准文件,可能是特定配置或自定义实现产生的。

可能的用途

文件协作关系

查询词
.tip索引
.tim词典
.doc倒排表
文档结果

优化特性

1. 压缩技术

  • 增量编码:文档ID存储差值
  • VInt编码:变长整数压缩
  • 前缀压缩:词项共享前缀
  • 位压缩:布尔值和标志位

2. 查询优化

3. 存储效率

原始数据: 100GB
├─ .tim文件: ~5GB (词典)
├─ .tip文件: ~100MB (索引)
├─ .doc文件: ~15GB (倒排表)
└─ 总计: ~20GB (5倍压缩率)

实际应用示例

搜索 “Lucene” 的过程:

  1. 查找.tip文件:通过FST找到 “L” 开头的Block位置
  2. 读取.tim文件:在Block中二分查找 “Lucene”
  3. 获取指针:得到.doc文件中的偏移量
  4. 读取.doc文件:获取包含 “Lucene” 的所有文档ID
  5. 返回结果:根据相关性排序返回文档

这种分层索引结构使得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操作。 如果我们的标签通过仿射变换后确实与我们的输入数据相关,那么这种方法确实足够了。 但是,仿射变换中的线性是一个很强的假设。 线性模型可能会出错 例如&…

哈夫曼编码例题

某电文中由A、B、C、D、E、F、G共7个字母组成,使用的频度分别0.1、0.05、0.25、0.15、0.1、0.2、0.15。 (1)构造哈夫曼树。(2)列表写出操作码的等长编码、哈夫曼编码和只用两种最短码长的扩展编码。操作码 频度 等长编…

临沂在线做网站智能路由器 建网站

迭代 思路: 暴力模拟迭代;假设从第 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", …

python第三天

作业: 题目描述 模拟一个数字密码锁的工作过程,规则如下: 1. 初始密码为四位数:1234 2. 用户有3次输入密码的机会 3. 每次输入后: - 若密码正确,提示"密码正确,锁已打开"并结束程序 - 若密码错误,提…