void Query::run_query(ClientDeal &client) { get_query_map(client); /* * 求交集 */ count_common_docid(); int docid = calculate_similarity(client); std::cout<<"docid "<<docid<<std::endl; }
void simbet_check_for_relaying_pkgs(struct Simulator *aSim, struct Node *aNode, struct Node *bNode) { struct Item *aItem, *temp; struct Pkg *aPkg, *newPkg; struct Node *dstNode; double sim_aNode_dst, sim_bNode_dst, SimUtil_aNode, SimUtil_bNode, BetUtil_aNode, BetUtil_bNode, SimBetUtil_aNode, SimBetUtil_bNode; aItem = aNode->storage->pkgs.head; while(aItem != NULL) { aPkg = (struct Pkg*)aItem->datap; dstNode = lookup_node(&aSim->vnodes, aPkg->dst); /* calculate the similarity between aNode and the dest*/ sim_aNode_dst = calculate_similarity(aNode, dstNode); /* calculate the similarity between bNode and the dest*/ sim_bNode_dst = calculate_similarity(bNode, dstNode); if(sim_aNode_dst+sim_bNode_dst == 0) { SimUtil_aNode = 0; SimUtil_bNode = 0; } else { SimUtil_aNode = sim_aNode_dst/(sim_aNode_dst+sim_bNode_dst); SimUtil_bNode = sim_bNode_dst/(sim_aNode_dst+sim_bNode_dst); } if(aNode->betweenness+bNode->betweenness == 0) { BetUtil_aNode = 0; BetUtil_bNode = 0; } else { BetUtil_aNode = aNode->betweenness/(aNode->betweenness+bNode->betweenness); BetUtil_bNode = bNode->betweenness/(aNode->betweenness+bNode->betweenness); } SimBetUtil_aNode = aSim->oracle->alfar*SimUtil_aNode + aSim->oracle->beta*BetUtil_aNode; SimBetUtil_bNode = aSim->oracle->alfar*SimUtil_bNode + aSim->oracle->beta*BetUtil_bNode; if(aSim->fwdMethod == NO_REPLICA_FWD) { if(strcmp(aPkg->dst, bNode->name)==0) { newPkg = pkg_copy_func(aPkg); newPkg->endAt = aSim->clock; node_recv(aSim, bNode, newPkg); temp = aItem->next; storage_remove_pkg(aNode->storage, aPkg->id); aItem = temp; continue; } else if( SimBetUtil_aNode < SimBetUtil_bNode ) { newPkg = pkg_copy_func(aPkg); node_recv(aSim, bNode, newPkg); temp = aItem->next; storage_remove_pkg(aNode->storage, aPkg->id); aItem = temp; continue; } } else if(aSim->fwdMethod == BETTER_ESTIMATE_FWD) { if(strcmp(aPkg->dst, bNode->name)==0) { newPkg = pkg_copy_func(aPkg); newPkg->endAt = aSim->clock; node_recv(aSim, bNode, newPkg); temp = aItem->next; storage_remove_pkg(aNode->storage, aPkg->id); aItem = temp; continue; } else if( SimBetUtil_aNode < SimBetUtil_bNode ) { newPkg = pkg_copy_func(aPkg); node_recv(aSim, bNode, newPkg); } } else if(aSim->fwdMethod == EVERBEST_ESTIMATE_FWD) { if(strcmp(aPkg->dst, bNode->name)==0) { newPkg = pkg_copy_func(aPkg); newPkg->endAt = aSim->clock; node_recv(aSim, bNode, newPkg); temp = aItem->next; storage_remove_pkg(aNode->storage, aPkg->id); aItem = temp; continue; } else if ((aPkg->value==-1 && SimBetUtil_aNode < SimBetUtil_bNode) || (aPkg->value!=-1 && SimBetUtil_bNode > aPkg->value)) { newPkg = pkg_copy_func(aPkg); aPkg->value = SimBetUtil_bNode; newPkg->value = SimBetUtil_bNode; node_recv(aSim, bNode, newPkg); } } aItem = aItem->next; } }