TSE从正向索引到反向索引

分词的代码在HzSeg.cpp中。

对raw格式的网页内容 进行分割的代码在DocSegment.cpp中

前面已经建立好2个表,一个是url对应着记录号,一个是记录号对应的偏移。

现在开始对网页进行处理,实际上只用到第2张表。

遍历这张表,把一个一个的记录取出来,存到CDocument对象里,将来要用时就知道

这个记录在原始文件raw里的偏移是多少,可以跳到那个位置去读

 

while  (getline(ifsDoc,strLine)){
   
int  docid,pos,length;
   
char  chksum[ 33 ];

   memset(chksum, 
0 33 );
   sscanf( strLine.c_str(), 
" %d%d%d%s " & docid,  & pos,  & length,chksum );
   iDocument.m_nDocId 
=  docid;
   iDocument.m_nPos 
=  pos;
   iDocument.m_nLength 
=  length;
   iDocument.m_sChecksum 
=  chksum;
   vecCDocument.push_back(iDocument);
}

 

然后从vector里面取出每个记录号,读取一个记录的所有内容(包括头)

然后移动致实际内容开始的地方

 

//  skip Head
    int  bytesRead  =   0 ,newlines  =   0 ;
   
while  (newlines  !=   2   &&  bytesRead  !=  HEADER_BUF_SIZE - 1 ) {
    
if  ( * ==   ' ' )
     newlines
++ ;
    
else
     newlines 
=   0 ;
    s
++ ;
    bytesRead
++ ;
   }

把接下来的html正文内容传给iDocument.m_sBodyNoTags = s;

最后执行分词

 

string  strLine  =  iDocument.m_sBodyNoTags;

CHzSeg iHzSeg;
   strLine 
=  iHzSeg.SegmentSentenceMM(iDict,strLine);

分词的结果是记录ID号对应以"/"分割的关键字

重定向到正向索引文件中:

 

fout  <<  docId  <<  endl  <<  strLine;
   fout 
<<  endl;

根据这些记录,生成一个文件

类似

1

中国/ 北京/

2

美国/ 纽约/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值