zoukankan      html  css  js  c++  java
  • Lucene40SkipListWriter

    多级跳跃表是保存在tim文件里的。

    tip是term index,tim是term dictionary。记忆方法是,p是pointer因此是term index。

    这个类会保存多个level的last变量和cur变量,同一时候使用RAMOutputStream数组缓存不同级别跳跃表的内容,一个term的全部doc加入�完后才写入tim文件。几个主要方法:

    resetSkip:几个last变量重置,lastSkipFreqPointer和lastSkipProxPointer赋值为freq和prox文件的当前长度。发生在上一个term结束,下一个term開始时。

    setSkipData:设置几个current变量,curFreqPointer和curProxPointer赋值为freq和prox文件的当前长度。

    bufferSkip:按例如以下内容缓存进入不同级别的RAMOutputStream中:

    (docDelta << 1) | 1        LastPayloadLength     LastOffsetLength        freqDelta     proxDelta          child

    当中child是低一级的跳跃表指针。(docDelta是否shift,是否保存lastpayloadLength和lastoffsetlength看详细情况)。能够看出跳跃表是个单链表结构,假设按dicid从小到大递增,则总是指向小一个interval的位置,按dicid从大到小递减,则总是指向大一个interval的位置。lastpayloadlength和lastoffsetlength是跳跃表上一个节点最后一个position的信息,之所以保存是能够得到上个位置最后一个position的信息,但并不能因此反向遍历position列表。

    writeSkip:缓存的多级跳跃表的RAMOutputStream写入tim文件里,写入时按级别从高到低写入,先是长度,然后是整个buffer,level 0不用写长度。

  • 相关阅读:
    android:text 文字阴影设置
    android 布局的android:padding 和android:margin的区别
    sqlite的Query方法操作和参数详解
    SQL Server中如何让SQL语句对字符串大小写敏感
    android SQLite数据库(转)
    JAVA中内存分配的问题
    testview属性之详解
    在linux环境下安装VMtools(成功)
    关于配置文件
    C#的几种“属性”概念理解
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4052622.html
Copyright © 2011-2022 走看看