- 浏览: 1059948 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1441)
- 软件思想&演讲 (9)
- 行业常识 (250)
- 时时疑问 (5)
- java/guava/python/php/ruby/R/scala/groovy (213)
- struct/spring/springmvc (37)
- mybatis/hibernate/JPA (10)
- mysql/oracle/sqlserver/db2/mongdb/redis/neo4j/GreenPlum/Teradata/hsqldb/Derby/sakila (268)
- js/jquery/jqueryUi/jqueryEaseyUI/extjs/angulrJs/react/es6/grunt/zepto/raphael (81)
- ZMQ/RabbitMQ/ActiveMQ/JMS/kafka (17)
- lucene/solr/nuth/elasticsearch/MG4J (167)
- html/css/ionic/nodejs/bootstrap (19)
- Linux/shell/centos (56)
- cvs/svn/git/sourceTree/gradle/ant/maven/mantis/docker/Kubernetes (26)
- sonatype nexus (1)
- tomcat/jetty/netty/jboss (9)
- 工具 (17)
- ETL/SPASS/MATLAB/RapidMiner/weka/kettle/DataX/Kylin (11)
- hadoop/spark/Hbase/Hive/pig/Zookeeper/HAWQ/cloudera/Impala/Oozie (190)
- ios/swift/android (9)
- 机器学习&算法&大数据 (18)
- Mesos是Apache下的开源分布式资源管理框架 (1)
- echarts/d3/highCharts/tableau (1)
- 行业技能图谱 (1)
- 大数据可视化 (2)
- tornado/ansible/twisted (2)
- Nagios/Cacti/Zabbix (0)
- eclipse/intellijIDEA/webstorm (5)
- cvs/svn/git/sourceTree/gradle/jira/bitbucket (4)
- jsp/jsf/flex/ZKoss (0)
- 测试技术 (2)
- splunk/flunm (2)
- 高并发/大数据量 (1)
- freemarker/vector/thymeleaf (1)
- docker/Kubernetes (2)
- dubbo/ESB/dubboX/wso2 (2)
最新评论
介绍了Lucene里面所有的文件格式以及的作用,那么接下来的一系列文章里,将逐个细说,今天我们先来看下lucene索引文件格式里面的老大段文件,以.gen ,.si为后缀名的文件。
.si是记录段文件的元数据的信息,主要有如下的几个属性
数据类型 描述
Header 记录一个头部编码,包含一个字符串去校验文件和版本号,它可以被解析和验证通过一个特定的方法,CodecHeader --> Magic,CodecName,Version Magic ->Uint32(32位无符号整数写成四个字节,高位字节),标识开始的头部CodecName->String 通过这个字符串校验文件Version ->Uint32(32位无符号整数写成四个字节,高位字节),记录文件的版本号
SegSize Int32
SegVersion String
Diagnostics, Attributes Map<String,String>
Files Set<String>
IsCompoundFile Int8
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,存储在段过被更新过的文件。
.si是记录段文件的元数据的信息,主要有如下的几个属性
数据类型 描述
Header 记录一个头部编码,包含一个字符串去校验文件和版本号,它可以被解析和验证通过一个特定的方法,CodecHeader --> Magic,CodecName,Version Magic ->Uint32(32位无符号整数写成四个字节,高位字节),标识开始的头部CodecName->String 通过这个字符串校验文件Version ->Uint32(32位无符号整数写成四个字节,高位字节),记录文件的版本号
SegSize Int32
SegVersion String
Diagnostics, Attributes Map<String,String>
Files Set<String>
IsCompoundFile Int8
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,存储在段过被更新过的文件。
发表评论
-
elasticsearch异常信息汇总
2017-11-06 09:34 15541.IndexMissingException 异常信息 ... -
Elasticsearch的架构
2018-03-22 10:30 512为什么要学习架构? Elasticsearch的一些架构 ... -
怎么在Ubuntu上打开端口
2017-10-21 20:45 0Netstat -tln 命令是用来查看linux的端口使用情 ... -
Elasticsearch工作原理
2018-03-22 10:30 452一、关于搜索引擎 各 ... -
Elasticsearch的路由(Routing)特性
2017-10-11 10:41 0Elasticsearch路由机制介 ... -
Elasticsearch中的segment理解
2017-10-11 09:58 1902在Elasticsearch中, 需要搞清楚几个名词,如se ... -
Elasticsearch的路由(Routing)特性
2017-09-28 16:52 623Elasticsearch路由机制介绍 Elastics ... -
Elasticsearch 的 Shard 和 Segment
2017-09-28 16:05 1201Shard(分片) 一个Shard就是一个Lu ... -
开源大数据查询分析引擎现状
2017-09-22 03:04 836大数据查询分析是云计算中核心问题之一,自从Google在20 ... -
大数据处理方面的 7 个开源搜索引擎
2017-09-22 03:01 498大数据是一个包括一切 ... -
开源大数据查询分析引擎现状
2017-09-23 11:26 551大数据查询分析是云计算中核心问题之一,自从Google在2 ... -
elasticsearch 把很多类型都放在一个索引下面 会不会导致查询慢
2017-09-25 09:45 985主要看数据量ES索引优 ... -
腾讯大数据Hermes爱马仕的系统
2017-09-23 11:15 1005腾讯大数据最近做了几件事,上线了一个官方网站http:// ... -
配置高性能Elasticsearch集群的9个小贴士
2017-09-25 10:02 593Loggly服务底层的很多 ... -
Elasticsearch与Solr
2017-09-25 16:24 558Elasticsearch简介* Elasti ... -
大数据杂谈微课堂|Elasticsearch 5.0新版本的特性与改进
2017-09-26 09:57 809Elastic将在今年秋季的 ... -
ElasticSearch性能优化策略
2017-09-26 09:51 452ElasticSearch性能优化主 ... -
ES索引优化
2017-09-19 20:39 0ES索引优化篇主要从两个方面解决问题,一是索引数据过程;二是 ... -
分词与索引的关系
2017-09-19 20:33 0分词与索引,是中文搜索里最重要的两个技术,而且两者间是密不可 ... -
Elasticsearch中的segment理解
2017-09-19 20:30 0在Elasticsearch中, 需要搞清楚几个名词,如se ...
相关推荐
在C#开发中,搜索引擎的构建是不可或缺的一部分,而Lucene.Net作为一个强大的全文搜索引擎库,为开发者提供了丰富的功能。本文将重点探讨Lucene.Net.Analysis.Cn.dll和Lucene.Net.dll这两个关键组件在C#环境下的作用...
作为Apache Lucene项目的一部分,Lucene.Net.dll为开发者提供了在.NET环境中构建高性能搜索引擎的能力。本文将深入探讨2.9.2版本的Lucene.Net.dll,揭示其背后的强大功能和核心技术。 Lucene.Net.dll是基于Java版本...
lucene.net.dll(3.0.3.0)
Lucene.Net.dll 2.1 Lucene.Net,.net 的开源 全文搜索框架!
IKAnalyzer 是一个开源的、基于Java实现的中文分词器,专为全文检索和搜索引擎提供高效、快速的分词服务。这款工具广泛应用于Lucene、Elasticsearch、Solr等全文检索框架,以提高中文处理的性能。在给定的标题和描述...
适合练手、课程设计、毕业设计的Java项目源码:公交搜索系统(java结合lucene).rar 适合练手、课程设计、毕业设计的Java项目源码:公交搜索系统(java结合lucene).rar 适合练手、课程设计、毕业设计的Java项目源码...
《深入理解Lucene.Net.NLS:打造多语言搜索体验》 在现代的互联网环境中,搜索引擎已经成为获取信息的关键工具。在.NET开发领域,Lucene.Net是一个强大的、高性能的全文搜索引擎库,它提供了对文本数据的索引和搜索...
最后,虽然Lucene使用Java语言写成,但是开放源代码社区的程序员正在不懈的将之使用各种传统语言实现(例如.net framework[14]),在遵守Lucene索引文件格式的基础上,使得Lucene能够运行在各种各样的平台上,系统...
org.apache.lucene.analysis.cjk.CJKAnalyzer .......
1. **索引构建**:Lucene.Net.DemoLib.dll提供了如何创建索引的示例,包括从文本文件、数据库或其他数据源中提取信息,并将这些信息转换为可搜索的索引结构。 2. **查询解析与执行**:这个库展示了如何构建和执行...
来自牛人修改的IKAnalyzer,https://github.com/sea-boat/IKAnalyzer-Mirror,亲测Lucene7.2可用
Apache Lucene 是一个开源全文搜索引擎库,自1999年诞生以来,它为开发者提供了强大的文本检索功能,广泛应用于各种信息检索系统。本次我们将聚焦于Lucene 1.4.3版本,这个版本虽然相对较为古老,但仍然具有重要的...
Lucene.NET的中文分词模块通常使用基于字节编码的词典,如Big5或GBK编码的词典,以适应不同字符集的需求。 3. 词项过滤器(TokenFilter):过滤器用于进一步处理分词结果,如去除停用词(如“的”、“是”等常见但...
基于Lucene.net的四个版本(更新至2018.1.26 ) ------------------------------- Lucene.Net.2.9.2.2-支持.net2.0和4.0; Lucene.Net.2.9.4.1 仅支持.net4.0; Lucene.Net.3.0.3 z支持3.5和4.0; Lucene.Net.4.8.0-...
2. Lucene-4535:`OpenUtil.filterIterator`被标记为内部API,意味着开发者不应直接依赖此API,而是应该使用推荐的公开接口。 3. Lucene-4924:`DocIdSetIterator.docID()`方法现在在未定位时必须返回-1,而不是1。...
总的来说,“lucene3.6.jar”与IkAnalyzer的结合,为开发者提供了一套强大的中文全文检索解决方案,既兼顾了搜索的效率,又保证了分词的准确性。通过深入理解和熟练运用这两个工具,可以在各种Java应用中实现高效且...