• <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é)者站在巨人的肩膀上 閱讀(1167) 評(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   管理


            国产精品久久久久久久app| 久久亚洲精品无码播放| 国产一区二区三区久久| 狠狠干狠狠久久| 精品久久久久久久国产潘金莲| 国产偷久久久精品专区| 99久久人妻无码精品系列| 久久精品中文字幕第23页| 狠狠综合久久AV一区二区三区| 国产精品久久精品| 久久强奷乱码老熟女网站| 国产精品永久久久久久久久久| 久久精品免费全国观看国产| 久久久久无码精品国产| 亚洲精品tv久久久久| 99国产欧美久久久精品蜜芽| 少妇久久久久久被弄到高潮| 久久国产亚洲精品麻豆| 久久精品人人做人人爽97| 久久成人小视频| 久久综合色区| 久久久久亚洲爆乳少妇无| 国产麻豆精品久久一二三| 狠狠色丁香久久婷婷综合图片| 久久精品毛片免费观看| 久久天天躁狠狠躁夜夜网站| 久久亚洲国产精品成人AV秋霞| 久久丝袜精品中文字幕| 欧美精品福利视频一区二区三区久久久精品| 色欲久久久天天天综合网精品 | 久久香蕉国产线看观看精品yw | 久久九九兔免费精品6| 亚洲精品tv久久久久| 三级韩国一区久久二区综合| 久久艹国产| 久久噜噜久久久精品66| 亚洲人成无码www久久久| 国产精品久久久久久久人人看| 久久亚洲天堂| 亚洲精品白浆高清久久久久久| 97香蕉久久夜色精品国产 |