• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            學(xué)著站在巨人的肩膀上

            金融數(shù)學(xué),InformationSearch,Compiler,OS,

              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              12 隨筆 :: 0 文章 :: 8 評(píng)論 :: 0 Trackbacks

            前面的DocIndex程序輸入一個(gè)Tianwang.raw.*****文件,會(huì)產(chǎn)生一下三個(gè)文件 Doc.idx, Url.idx, DocId2Url.idx,我們這里對(duì)DocSegment程序進(jìn)行分析。

            這里輸入 Tianwang.raw.*****,Doc.idx,Url.idx.sort_uniq等三個(gè)文件,輸出一個(gè)Tianwang.raw.***.seg 分詞完畢的文件

            int main(int argc, char* argv[])
            {
                string strLine, strFileName=argv[1];
                CUrl iUrl;
                vector<CUrl> vecCUrl;
                CDocument iDocument;
                vector<CDocument> vecCDocument;
                unsigned int docId = 0;

                //ifstream ifs("Tianwang.raw.2559638448");
                ifstream ifs(strFileName.c_str());  //DocSegment Tianwang.raw.****
                if (!ifs) 
                {
                    cerr << "Cannot open tianwang.img.info for input\n";
                    return -1;
                }

                ifstream ifsUrl("Url.idx.sort_uniq");   //排序并消重后的url字典
                if (!ifsUrl) 
                {
                    cerr << "Cannot open Url.idx.sort_uniq for input\n";
                    return -1;
                }
                ifstream ifsDoc("Doc.idx"); //字典文件
                if (!ifsDoc) 
                {
                    cerr << "Cannot open Doc.idx for input\n";
                    return -1;
                }

                while (getline(ifsUrl,strLine)) //偏離url字典存入一個(gè)向量?jī)?nèi)存中
                {
                    char chksum[33];
                    int  docid;

                    memset(chksum, 0, 33);
                    sscanf( strLine.c_str(), "%s%d", chksum, &docid );
                    iUrl.m_sChecksum = chksum;
                    iUrl.m_nDocId = docid;
                    vecCUrl.push_back(iUrl);
                }

                while (getline(ifsDoc,strLine))     //偏離字典文件將其放入一個(gè)向量?jī)?nèi)存中
                {
                    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);
                }

             

                strFileName += ".seg";
                ofstream fout(strFileName.c_str(), ios::in|ios::out|ios::trunc|ios::binary);    //設(shè)置完成分詞后的數(shù)據(jù)輸出文件
                for ( docId=0; docId<MAX_DOC_ID; docId++ )
                {

                    // find document according to docId
                    int length = vecCDocument[docId+1].m_nPos - vecCDocument[docId].m_nPos -1;
                    char *pContent = new char[length+1];
                    memset(pContent, 0, length+1);
                    ifs.seekg(vecCDocument[docId].m_nPos);
                    ifs.read(pContent, length);

                    char *s;
                    s = pContent;

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


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

                    //iDocument.m_sBody = s;
                    iDocument.RemoveTags(s);    //去除<>
                    iDocument.m_sBodyNoTags = s;

                    delete[] pContent;
                    string strLine = iDocument.m_sBodyNoTags;

                    CStrFun::ReplaceStr(strLine, " ", " ");
                    CStrFun::EmptyStr(strLine); // set " \t\r\n" to " "


                    // segment the document 具體分詞處理
                    CHzSeg iHzSeg;
                    strLine = iHzSeg.SegmentSentenceMM(iDict,strLine);
                    fout << docId << endl << strLine;
                    fout << endl;
                    
                }

                return(0);
            }
            這里只是浮光掠影式的過(guò)一遍大概的代碼,后面我會(huì)有專題詳細(xì)講解 parse html 和 segment docment 等技術(shù)

             

             

            posted on 2009-12-10 23:02 學(xué)者站在巨人的肩膀上 閱讀(1157) 評(píng)論(1)  編輯 收藏 引用 所屬分類: 中文文本信息處理

            評(píng)論

            # re: 自頂向下學(xué)搜索引擎——北大天網(wǎng)搜索引擎TSE分析及完全注釋[6]倒排索引的建立的程序分析(2) 2009-12-12 13:17 凡客誠(chéng)品網(wǎng)
            捱三頂四看來(lái)達(dá)到  回復(fù)  更多評(píng)論
              


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            人妻久久久一区二区三区| 久久香蕉综合色一综合色88| 国产2021久久精品| 国产AV影片久久久久久| 久久午夜福利电影| 亚洲国产欧洲综合997久久| 久久国产欧美日韩精品| 久久久久无码精品国产app| 热99RE久久精品这里都是精品免费| 亚洲欧洲日产国码无码久久99| 99久久精品免费看国产| 欧美一区二区久久精品| 精品久久777| 亚洲国产精品18久久久久久| 91精品日韩人妻无码久久不卡| 久久午夜夜伦鲁鲁片免费无码影视| 精品久久久久久无码专区 | 久久国产精品免费一区二区三区| 国产免费久久久久久无码| 热久久最新网站获取| 精品一区二区久久| 超级97碰碰碰碰久久久久最新| 国产精品美女久久久久网| 综合久久给合久久狠狠狠97色 | 色综合合久久天天给综看| 2022年国产精品久久久久| 久久婷婷五月综合色奶水99啪| 国产一区二区精品久久凹凸 | 久久久久久曰本AV免费免费| 99热热久久这里只有精品68| A狠狠久久蜜臀婷色中文网| 亚洲成色www久久网站夜月| 久久亚洲国产最新网站| 久久综合一区二区无码| 久久久黄片| 狠狠综合久久综合中文88| 国产亚洲精午夜久久久久久| 久久久久国产日韩精品网站| 国产精品成人无码久久久久久| 99久久综合狠狠综合久久| 久久综合狠狠综合久久97色|