北大天网搜索引擎TSE分析及完全注释[6]倒排索引的建立的程序分析(4)

 

以下是根据正向索引建立倒排索引的注释

 

  1. int main(int argc, char* argv[])    //./CrtInvertedIdx moon.fidx.sort > sun.iidx
  2. {
  3.     ifstream ifsImgInfo(argv[1]);
  4.     if (!ifsImgInfo) 
  5.     {
  6.         cerr << "Cannot open " << argv[1] << " for input/n";
  7.         return -1;
  8.     }
  9.     string strLine,strDocNum,tmp1="";
  10.     int cnt = 0;
  11.     while (getline(ifsImgInfo, strLine)) 
  12.     {
  13.         string::size_type idx;
  14.         string tmp;
  15.         idx = strLine.find("/t");
  16.         tmp = strLine.substr(0,idx);
  17.         if (tmp.size()<2 || tmp.size() > 8) continue;
  18.         if (tmp1.empty()) tmp1=tmp;
  19.         if (tmp == tmp1) 
  20.         {
  21.             strDocNum = strDocNum + " " + strLine.substr(idx+1);
  22.         }
  23.         else 
  24.         {
  25.             if ( strDocNum.empty() )
  26.                 strDocNum = strDocNum + " " + strLine.substr(idx+1);
  27.             cout << tmp1 << "/t" << strDocNum << endl;
  28.             tmp1 = tmp;
  29.             strDocNum.clear();
  30.             strDocNum = strDocNum + " " + strLine.substr(idx+1);
  31.         }
  32.         cnt++;
  33.         //if (cnt==100) break;
  34.     }
  35.     cout << tmp1 << "/t" << strDocNum << endl;  //倒排索引中每个字典单词后的文档编号以table键为间隔
  36.     return 0;
  37. }

你可能感兴趣的:(搜索引擎,String,table,文档)