Lucene中对PostingTable进行排序,Posting源码

来源:互联网 发布:淘宝无线端流量来源 编辑:程序博客网 时间:2024/06/16 20:52

在DocumentWriter的addadocument方法中,当对一个Document进行倒排完毕后,所有词条就被加入postingTable中。

postingTable是一个HashTable它的key就是词条Term对象,它的值是一个posting类型的对象。这个类被定义在DocumentWriter类的内部。


package indexwriter;

//Posting类源码
import org.apache.lucene.index.Term;
import org.apache.lucene.index.TermVectorOffsetInfo;


public class Posting {
//词条对象
Term term;

//词条的出现频率
int freq;

//记录词条出现的位置的数组
int[] positions; //positions it occurs at

//记录词条的偏移量数组
TermVectorOffsetInfo[] offsets;

//构造函数
Posting(Term t, int position, TermVectorOffsetInfo offset){
term = t;
freq = 1;
positions = new int[1];
positions[0] = position;
if(offset != null){
offsets = new TermVectorOffsetInfo[1];
offsets[0] = offset;
}else
offsets = null;
}

}


所有词条被加入postingTable后,Lcuene首先将这个postingTable转化成一个Posting类型的数组,然后对这个数组进行排序,使所有的词条按照字典序排列,那样,就可以将词条信息写入。tii和.tis文件。另外, 将频率和位置信息写入.frq和prx文件中去。

0 0
原创粉丝点击