温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

lucene倒排索引的存储方式是什么

发布时间:2021-07-05 17:45:02 来源:亿速云 阅读:237 作者:chen 栏目:大数据

本篇内容介绍了“lucene倒排索引的存储方式是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

lucene的倒排索引存储包括词的索引数据存储、词的位置存储以及写入过程,这3个部分是比较复杂的准备分开描述,先谈谈位置的存储方式:

词的位置具体包括每篇文档中的词频、位置以及附带的payload(这里先忽略掉norm信息的存储),这3块lucene分别采用了3个输出流进行写入,具体写入过程如下:

1、对于每个词而言会记录该次所属的文档ID以及在该文档中的词频,由于文档ID已经排过序所以写入时会进行差值压缩存储,而文档词频会直接存储,并且每128条记录进行分块压缩存储;

2、令Doc=abc|123;bcd;def,每写完所属文档ID以及词频,就会写入该词在文档中的每个位置(指文档经过分词后的第n个词(分号为词的分隔符def为第3个词))、起始和结束的偏移量(指文档未分词时的开始和结束位置(bcd的开始和结束位置分别为8和11),通过偏移量可以算出词、payload以及payload分隔符的总长度,所以这个长度不要认为是词的长度和payload的长度(123为payload,对于abc的开始和结束位置分别为0和7))、每个词附带的payload信息。由于位置信息、偏移量已经排过序所以会按照差值压缩存储。位置信息会按照128条记录分块压缩存储到单独的文件中。payload的长度信息以及偏移量也按照128条记录分块压缩存储到单独的文件中而payload的内容并没有压缩而是直接写入同一个文件中。

lucene倒排索引的存储方式是什么

对于词频按照128条记录分块压缩是因为包含同一个词的文档可能非常多,极端情况下是所有文档都有。除了压缩还需要提供能够随机访问每篇文档位置信息的功能,因此对位置信息又建立了一层索引结构,而且是每个词对应一套索引。

索引需要记录的信息包括:上个块中最后一篇文档的ID,上个位置块的文件指针,上个payload块的文件指针,剩余未压缩的位置信息个数以及剩余未压缩的payload数组长度。(这块索引内容还是放到下篇详细说明)

当写完一个term时,对于剩余未达到128条记录的内容,文档ID和词频按照vint方式压缩,位置、payload长度和偏移量同样按照vint方式压缩而payload内容直接写入。

“lucene倒排索引的存储方式是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI