////////////////////////////////////////////////////////////////////////// // Main API functions InvertedDocument::InvertedDocument(bool index, const char* root, int splits , int buffer_size) :totalSplits(splits), rootDir(root), indexMode(index),rootDirPath(root), buffer(buffer_size), totalDocuments(0){ corpusMaster = chunkRelink = corpusSentMaster = NULL; if(exists(rootDirPath)){ // Check directory exist if(indexMode){ P_FATAL("The directory for indexing \"%s\" already exists! Cowardly refuse to overwrite it. Quitting",rootDir.c_str()); } boost::filesystem::path rel = rootDirPath / "maxsplit"; ifstream ifs(rel.string().c_str()); if(!ifs){ P_FATAL("The directory does not contain required maxsplit file. Quitting"); } ifs >> totalSplits; ifs.close(); if(totalSplits != splits){ P_INFO("The directory shows the number of splits is %d instead of specified (or default) %d",totalSplits,splits); } rel = rootDirPath / "dict"; ifstream idic(rel.string().c_str()); C_FATAL(idic); qbuffer.LoadLexicon(idic); idic.close(); chunkRelink = OpenFile("crl"); C_FATAL(chunkRelink); qbuffer.LoadChunkRelink(chunkRelink); fclose(chunkRelink); chunkRelink = NULL; corpusMaster = OpenFile("corpus/master"); C_FATAL(corpusMaster); qbuffer.LoadCorpusBounds(corpusMaster); fclose(corpusMaster); }else{ if(!indexMode){
truefalse CRunner::do_init() { CCfg * l_obj = CCfgX::instance(); g_term_sns = &m_term_SNs; if (!m_pg.login_to_db()) { C_FATAL("fail to connect to database. quitting...\n"); return C_BAD; } if (!m_pg.load_term_SNs(&m_term_SNs)) { C_FATAL("fail to get term sn from db. quitting...\n"); return C_BAD; } if (l_obj->handleout()) { add_component(m_ping_container = new CPingContainer(this)); add_component(m_d2m_container = new CD2MContainer(this)); } if (l_obj->pre()) { add_component(m_position_container = new CPositionContainer(this)); add_component(m_balance_container = new CBalanceContainer(this)); add_component(m_bs_req_container = new CBsReqContainer(this)); } return C_OK; }