/* * Devuelve un vector de los ids de las canciones de un autor dado. */ std::vector<IDdocumento_t> ResolvedorConsultas::get_id_canciones_autor(std::string & autor) { std::vector<IDdocumento_t> ids; indiceSecundarioAutor.abrir(directorioSalida+'/'+std::string(FILENAME_IDX_SECUN_AUTOR),"rb+"); IterArbolBMas buscador(indiceSecundarioAutor); ClaveX claveInicio; claveInicio.set_clave(autor + (char)0); int res = buscador.comienzo(">=",claveInicio); if (res != RES_ERROR) { ClaveX claveFin; std::string autorSiguiente = autor; autorSiguiente[autorSiguiente.size()-1] = (char)(autor[autor.size()-1] + 1); claveFin.set_clave(autorSiguiente); RegistroClave otraCancion; while (buscador.leer_siguiente(otraCancion) != RES_FIN && otraCancion.get_clave() < claveFin) { ClaveX clave = otraCancion.get_clave(); std::string autorMasId; clave.get_clave(autorMasId); std::string soloID; soloID.append(autorMasId.begin()+autor.size(), autorMasId.end()); std::istringstream ss(soloID); int idDoc; ss >> idDoc; ids.push_back(idDoc); } }
void lerIndice(char* tipo, char* entrada, char* arqBuscas){ Palavra** hash; Documento2* listaDocs = NULL; int tamHash = 0; listaDocs = recriarListaDocs(entrada, listaDocs); //RECRIA O INDICE E TESTA ISSO // while(listaDocs!=NULL){ // printf("%s\n", listaDocs->nomeDoc); // listaDocs = listaDocs->proximo; // } hash = recriarHash(entrada, &tamHash); buscador(arqBuscas, tipo, hash, tamHash); }