读《Lucene_3.0_原理与代码分析》
精选 转载3. 或然跟随规则(A, B?)
在Lucene中,采取以下的方式:A的值左移一位,空出最后一位,作为标志位,来表示后面是否跟随B,所以在这种情况下,A/2是真正的A原来的值。
从而PositionDelta和PayloadLength一起适用或然跟随规则。
4. 跳跃表规则(Skip list)
需要注意一点的是,在很多数据结构或算法书中都会有跳跃表的描述,原理都是大致相同的,但是定义稍有差
别:
• 对间隔(Interval)的定义: 如图中,有的认为间隔为2,即两个上层元素之间的元素数,不包括两个上层元素;有的认为是3,即两个上层元素之间的差,包括后面上层元素,不包括前面的上层元素;有的认为是4,即除两个上层元素之间的元素外,既包括前面,也包括后面的上层元素。Lucene是采取的第二种定义。
• 对层次(Level)的定义:如图中,有的认为应该包括原链表层,并从1开始计数,则总层次为3,为1,2,3层;有的认为应该包括原链表层,并从0计数,为0,1,2层;有的认为不应该包括原链表层,且从1开始计数,则为1,2层;有的认为不应该包括链表层,且从0开始计数,则为0,1层。Lucene采取的是最后一种定义。
跳跃表比顺序查找,大大提高了查找速度,如查找元素72,原来要访问2,3,7,12,23,37,39,44,50,72总共10个元素,应用跳跃表后,只要首先访问第1层的50,发现72大于50,而第1层无下一个节点,然后访问第2层的94,发现94大于72,然后访问原链表的72,找到元素,共需要访问3个元素即可。
然而Lucene在具体实现上,与理论又有所不同,在具体的格式中,会详细说明。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Java学习---Lucene原理与代码分析完整版
Java学习---Lucene原理与代码分析完整版
Lucene 代码分析 lucene java -
Lucene3.0分词原理与分词系统
分词原理 建立索引和查询的过程中,都是以基本的语素项为单位的。基本的语素项就
lucene 算法 Solr 搜索引擎 全文检索 -
Lucene3.0 优化操作
Lucene3.0 优化操作什么是Lucene? 我们使用Lucene,主要是做站内搜索,即对一个系统内的资源进行搜索。如BBS、BLOG中的文章搜索目录,里面是
lucene 优化 全文检索 搜索 analyzer -
代码雨实现原理与代码分析
闲来无事,好奇代码雨是怎么实现的,早就听说是利用链表,但自己
代码雨 源码 C++ windows api 剖析 -
Lucene 工作原理
Lucene是一个高性能的java全文检索工具包,它使用的是倒排文件索引结构。该结构
lucene 倒排索引 字符串 全文检索 -
IAT Hook 原理分析与代码编写
首先第一处浅红色部分就是导出表的地址与大小,默认情况下只有DLL文件才会导出函
microsoft 字符串 字段 表结构