コード例 #1
0
ファイル: retrieval-block.cpp プロジェクト: Adam57/SIGIR2016
void retrieval(char *indexPath,queryManager *queries,char *outputFile)
{
        IndexReader *theIndex = new IndexReader(indexPath);
        char blockInfoName[] = "BM25-02";
        theIndex -> loadBlockInfo(blockInfoName);

        ofstream F1;
        F1.open(outputFile);
        if(!F1) {cerr << "Error: file "<<outputFile<<" Could not be writ to"<<endl; return;}

        double totalEval=0;
        TimeCounter *timer = new TimeCounter();
        unsigned i;
        for(i=0;i<queries->num();i++)
        {
                timer->start();
                query* qry = queries -> getQuery(i);
                RetManager *reter = new RetManager(theIndex,qry);
                reter->retrieval(RetNum);
                timer->stop();
                cout<<qry->topicNum<<'\t'<<timer->getTrackTime()<<'\t'<<reter->getEvalCounter()<<endl;
                totalEval+=reter->getEvalCounter();
                reter->show(F1);
                //cout<<"\r retrieval topic "<<qry->topicNum<<flush;
                delete reter;
        }
        cout<<endl;
        cout<<"Used total time "<<timer->getTotalTime()<<"ms, average "<<timer->getAverageTime()<<"ms"<<" with "<<totalEval/queries->num()<<" evaluateions"<<endl;
        F1.close();
        delete(theIndex);
        delete(timer);
}