lucene分析6

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 编码的字符序列的chars

lucene为了使信息的存储空间更小,访问速度更快,采用了一些技巧:
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
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值