lucene代码分析6

Lucene的索引结构由索引、段、文档、域和词组成。每个索引包含多个段,每个段包含多篇文档和不同域。词是索引最小单位,正向信息按层次保存,反向信息保存词到文档的映射。文档删除可通过Term、Query或Document ID进行,使用IndexWriter会缓存删除操作。
摘要由CSDN通过智能技术生成

2021SC@SDUSC
lucene索引结构是有层次结构的,具体如下:
(1)索引 : 索引全部是是放在同一个文件夹中,这些内容构成了一个完整的lucene索引(2)段(segment):一个索引可以包括很多段,段与段之间是独立的,新添加新文档可以生成新的段,段与段可以合并具有相同前缀文件的属于同一段,如图中共两个段"_0","_1";segments.gen 和 segment_5是段的数据文件,也即它们保存了段的属性信息(3)文档(document):文档是建立索引的基本单位,不同的文档保存在不同的段中,一个段可以包括多篇文档新添加的文档是单独保存在新生成的段中,随着段的合并,不同的文档合并到同一个段中。(4)域(field):一篇文档包含不同类型的信息,可以分开索引,比如正题,时间,正文等,都可以保存在不同的域中,不同域的索引方式可以不同(5)词(term):词是索引的最小单位,是经过词法分析和语言处理后的字符串lucene的索引结构中,既包括了正向信息,也包括了反向信息正向信息:按层次保存了从索引,一直到词的包含关系,索引(Index)–>段(segment)–>文档(document)–>域(field)–>词(term);每个层次都包含了本层次的信息以及下层次的元信息包含正向信息的文件有:segment_N保存了此索引包含多少段,每段包含了多少个文档XXX.fnm保存了此段包含了多少域,每个域的名称以及索引方式XXX.fdx XXX.fdt 保存了此段包含的所有文档,每个文档包含了多少域,每个域放了那些信息XXX.tvx XXX.tvd XXX.tvf 保存了此段包含的所有文档,每个文档包含了多少域,每个域包含了那些词,每个词的字符串位置等信息反向信息:保存了字典到倒排表的映射,词(term)–> 文档(document)XXX.tis XXX.tii 保存了词典,也即此段包含的所有的词按字典顺序的排序XXX.frq 保存了倒排表,也即包含每个词的文档Id列表XXX.prx 保存了倒排表中每个词在包含此词的文档中的位置lucene 如何表示String :首先是一个Vint来表示此字符串包含的字数的个数,接着便是utf-8 编码的字符序列的charslucene为了使信息的存储空间更小,访问速度更快,采用了一些技巧:1.前缀后缀原则:当某一个词和前面一个词有共同的前缀的时候,后面的词仅仅保留前缀在词中的偏移,以及出前缀外的字符串2.差值原则 :先后保存两个整数的时候,后面的整数仅仅保存和前面整数的差值即可。3.或然跟随原则: lucene索引结构用一个标志位来表示某个值A后面可能存放某个值B 这样会浪费一个byte的空间,实际上一个bit就够了4.跳跃表规则:元素按顺序排列,按跳跃间隔和跳跃层次提交查找速度标准化因子在索引过程中总的计算:包括三个参数,(1)document boost 此值越大,说明此文档越重要(2)field boost 此值越大,说明此域越重要(3)一个域中包含的term越多,也即文档越长,此值越小,文档越短,此值越大 文档的删除主要有三种方式: indexWriter.deleteDocuments(Term ,term)所有包含此词的文档都会被删除 indexWriter.deleteDocuments(Query , query) 所有能满足此查询的文档都会被删除 indexReader.deleteDocuments(int docNum) 删除此id的文档 归根结底还是按照文档号删除删除文档既可以用reader,也可以用writer不同点:reader进行删除后,可以马上生效而用writer删除后,会被缓存在deleteinRAM以及deleteFlushed中,只要写入到索引文件,当indexReader再次打开时,才能够看到deleteinRAM与deleteFlushed有些版本的lucene对文档的删除是支持多线程的,当用indexWriter删除文档的时候,都是缓存deleteinRAM中的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值