Exemple #1
0
bool SearchService::InfluenceSearchByGroup(const string& input, string& output) {
    EntitySearchRequest request;
    request.ParseFromString(input);

    InfluenceSearchResponse response;

    auto gid = stoi(request.query());
    response.set_entity_id(gid);

    auto vit = pminer->g->Vertices();
    vit->MoveTo(gid);
    for (auto eit = vit->OutEdges(); eit->Alive(); eit->Next()) {
        if (eit->TypeName() == "GroupInfluence") {
            auto gi = parse<GroupInfluence>(eit->Data());
            Influence *inf = response.add_influence();
            inf->set_id(eit->TargetId());
            inf->set_topic(gi.topic);
            inf->set_score(gi.score);
        }
    }
    for (auto eit = vit->InEdges(); eit->Alive(); eit->Next()) {
        if (eit->TypeName() == "GroupInfluence") {
            auto gi = parse<GroupInfluence>(eit->Data());
            Influence *inf = response.add_influenced_by();
            inf->set_id(eit->SourceId());
            inf->set_topic(gi.topic);
            inf->set_score(gi.score);
        }
    }

    return response.SerializeToString(&output);
}
    SERVICE(InfluenceSearchByAuthor, EntitySearchRequest, InfluenceSearchResponse) {
        auto aid = stoi(request.query());
        response.set_entity_id(aid);

        auto vit = ig->g->Vertices();
        vit->MoveTo(aid);
        for (auto eit = vit->OutEdges(); eit->Alive(); eit->Next()) {
            if (eit->TypeName() == "Influence") {
                auto ai = parse<AuthorInfluence>(eit->Data());
                Influence *inf = response.add_influence();
                inf->set_id(eit->TargetId());
                inf->set_topic(ai.topic);
                inf->set_score(ai.score);
            }
        }
        for (auto eit = vit->InEdges(); eit->Alive(); eit->Next()) {
            if (eit->TypeName() == "Influence") {
                auto ai = parse<AuthorInfluence>(eit->Data());
                Influence *inf = response.add_influenced_by();
                inf->set_id(eit->SourceId());
                inf->set_topic(ai.topic);
                inf->set_score(ai.score);
            }
        }
        return true;
    }