Lucene4.3进阶开发之潜龙勿用( 七)

2023-10-12 20:10

本文主要是介绍Lucene4.3进阶开发之潜龙勿用( 七),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

上篇,散仙在修真篇之九里面,介绍了Lucene里面所有的文件格式以及的作用,那么接下来的一系列文章里,将逐个细说,今天我们先来看下lucene索引文件格式里面的老大段文件,以.gen  ,.si为后缀名的文件。

.si是记录段文件的元数据的信息,主要有如下的几个属性 

213534_EPZo_1417419.png

1,SegVersion段的版本号,是段文件创建时的编码版本。 

2,SegSize是指包含在这个段文件里文档数(Document)的总数 

3,IsCompoundFile记录着这个段在写入时,是否被作为一个复合索引文件, 

如果是-1的话,则为正常的段索引文件,为1的话就是复合索引文件 

4,Checksum,检验和,包含所有段文件中的所有字节的CRC32 checksum, 

通常用于验证索引文件的完整性。 

5,Diagnostics,诊断映射,它会私下被IndexWriter写入记录,作为一个Debug时的一个辅助工具,每个段文件都有一个对应的诊断映射,它包含一些元数据,包括一些lucene当前的版本号,操作系统,Java版本,以及它是怎么被创建的,是合并(merge),还是被刷新(flush),还是被多个索引合并(addindex) 

6,Attributes,codec-private属性的键-值映射。 

7,对于这个段来说,它被组成由多个文件 

SegmentInfos这个类,几乎涵盖了段文件里所有的详细信息,提供了大量的方法用于在文件系统上操作段文件,segments_N往往是最活跃的文件,因为最新的段文件,常常面临着频繁的添加操作,这个文件包含了每个段的名字和细节编解码器和一些删除的元数据信息。 

另外一个文件segments.gen,这个文件包含了以_N开头的在当前的段文件的记录,

这个文件仅仅作为一个备份,以防Directy不能准确的定位所写入的当前段文件是那一些以_N开头的,通常仅包含一个int32位的header信息。 

文件: 

segments.gen: GenHeader, Generation, Generation 

segments_N: Header, Version, NameCounter, SegCount, <SegName, SegCodec, DelGen, DeletionCount, FieldInfosGen, UpdatesFiles>SegCount, CommitUserData, Checksum 

数据类型: 

Header---->CodecHeader 

GenHeader, NameCounter, SegCount, DeletionCount --> Int32 

Generation, Version, DelGen, Checksum, FieldInfosGen --> Int64 

SegName, SegCodec --> String 

CommitUserData --> Map<String,String> 

UpdatesFiles --> Set<String> 

介绍: 

Version数量,记录着这个索引所有被添加或删除文档的个数。 

NameCounter ,通常用于生成新的段文件名称 

SegName ,段名称,通常被用于所有组成段文件的前缀名称 

DelGen ,记录着所有段删除文件的数量,如果这个数是-1,则意味 

着没有删除任何记录,除此之外,任何一个大于0的数字,则意味着 

索引已经通过LiveDocsFormat进行了删除存储 

DeletionCount,记录某一个段删除文档的数量 

Checksum,校验和,上文有描述 

SegCodec,是段文件的编码和解码后的名称 

CommitUserData,用来提交一个用户提供不透明的Map结构的数据 

FieldInfosGen ,域信息文件,记录段更新的次数,-1无更新,大于0的数字 

则代表这更新的次数。 

UpdatesFiles,存储在段过被更新过的文件。 

转载于:https://my.oschina.net/heroShane/blog/201956

这篇关于Lucene4.3进阶开发之潜龙勿用( 七)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/198154

相关文章

VSCode开发中有哪些好用的插件和快捷键

《VSCode开发中有哪些好用的插件和快捷键》作为全球最受欢迎的编程工具,VSCode的快捷键体系是提升开发效率的核心密码,:本文主要介绍VSCode开发中有哪些好用的插件和快捷键的相关资料,文中... 目录前言1、vscode插件1.1 Live-server1.2 Auto Rename Tag1.3

Agent开发核心技术解析以及现代Agent架构设计

《Agent开发核心技术解析以及现代Agent架构设计》在人工智能领域,Agent并非一个全新的概念,但在大模型时代,它被赋予了全新的生命力,简单来说,Agent是一个能够自主感知环境、理解任务、制定... 目录一、回归本源:到底什么是Agent?二、核心链路拆解:Agent的"大脑"与"四肢"1. 规划模

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

MySQL 数据库进阶之SQL 数据操作与子查询操作大全

《MySQL数据库进阶之SQL数据操作与子查询操作大全》本文详细介绍了SQL中的子查询、数据添加(INSERT)、数据修改(UPDATE)和数据删除(DELETE、TRUNCATE、DROP)操作... 目录一、子查询:嵌套在查询中的查询1.1 子查询的基本语法1.2 子查询的实战示例二、数据添加:INSE

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建