本篇内容介绍了“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的内容并没有压缩而是直接写入同一个文件中。
对于词频按照128条记录分块压缩是因为包含同一个词的文档可能非常多,极端情况下是所有文档都有。除了压缩还需要提供能够随机访问每篇文档位置信息的功能,因此对位置信息又建立了一层索引结构,而且是每个词对应一套索引。
索引需要记录的信息包括:上个块中最后一篇文档的ID,上个位置块的文件指针,上个payload块的文件指针,剩余未压缩的位置信息个数以及剩余未压缩的payload数组长度。(这块索引内容还是放到下篇详细说明)
当写完一个term时,对于剩余未达到128条记录的内容,文档ID和词频按照vint方式压缩,位置、payload长度和偏移量同样按照vint方式压缩而payload内容直接写入。
“lucene倒排索引的存储方式是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!
本文名称:lucene倒排索引的存储方式是什么
本文链接:http://lswzjz.com/article/ipiegp.html