DataBase* PqModel::getDataBase(DataSet* ds ){ DataBase* db = new DataBase(); db->setFtrNum(ds->getFeatureNum()); db->setCoarseK(m_coarse_k); coarseIdx(ds,db); pq(ds,db); db->setFtrFileName(ds->m_vfilename); int* ftrFileIdx= ivec_new_0(ds->getFeatureNum()); memcpy(ftrFileIdx,ds->m_featureFileIdx,ds->getFeatureNum()); db->setFtrFileIdx(ftrFileIdx); return db; }
DataBase* PqModel::trainModel(DataSet*ds,char* centroid_file) { DataBase *db = new DataBase(); db->setFtrNum(ds->getFeatureNum()); db->setCoarseK(m_coarse_k); ifstream ifile(centroid_file,ios::binary); if(!ifile.good()){ ifile.close(); cout<<"->coarse index without coarse.centroids file !"<<endl; trainAndCoarseIdx(ds,db); // writeCentroids(centroid_file); } else{ ifile.close(); cout<<"->coarse index with coarse.centroids file !"<<endl; trainAndCoarseIdxWithCentroid(ds,db,centroid_file); } trainAndPq(ds,db); db->setFtrFileName(ds->m_vfilename); int* ftrFileIdx= ivec_new_0(ds->getFeatureNum()); memcpy(ftrFileIdx,ds->m_featureFileIdx,ds->getFeatureNum()); db->setFtrFileIdx(ftrFileIdx); return db; }