Example #1
0
def compare_theme(theme_name1, theme_name2, submit_user, flag):
    if flag == 'all':
        detail_result1 = query_detail_theme(theme_name1, submit_user)
        detail_result2 = query_detail_theme(theme_name2, submit_user)
        return {'detail_result1':detail_result1,'detail_result2':detail_result2}
    else:
        topic_id1 = p.get_pinyin(theme_name1)
        topic_id1 = topic_id1.lower()
        eid_string1 = es_event.get(index=special_event_name, doc_type=special_event_type, id=topic_id1,  fields=['event'])
        event_list1 = eid_string1['fields']['event'][0].split('&')
        topic_id2 = p.get_pinyin(theme_name2)
        topic_id2 = topic_id2.lower()
        eid_string2 = es_event.get(index=special_event_name, doc_type=special_event_type, id=topic_id2,  fields=['event'])
        event_list2 = eid_string2['fields']['event'][0].split('&')
        if flag == 'same':
            same_e = set(event_list1)&set(event_list2)
            same_e = [i for i in same_e]
            detail_result1 = event_detail_search(same_e,submit_user)
            detail_result2 = event_detail_search(same_e,submit_user)
        if flag == 'diff':
            diff_e1 = set(event_list1) - (set(event_list1)&set(event_list2))
            diff_e1 = [i for i in diff_e1]
            diff_e2 = set(event_list2) - (set(event_list1)&set(event_list2))
            diff_e2 = [i for i in diff_e2]
            detail_result1 = event_detail_search(diff_e1,submit_user)
            detail_result2 = event_detail_search(diff_e2,submit_user)
        return {'detail_result1':detail_result1,'detail_result2':detail_result2}
Example #2
0
def query_detail_theme(theme_name, submit_user):
    topic_id = p.get_pinyin(theme_name)
    topic_id = topic_id.lower()
    # topic_id = topic_id + '_' + submit_user
    eid_string = es_event.get(index=special_event_name, doc_type=special_event_type, id=topic_id,  fields=['event'])
    eid_list = eid_string['fields']['event'][0].split('&')
    result = event_detail_search(eid_list, submit_user)
    return result
Example #3
0
def query_detail_theme(theme_name, sort_flag):
    s_string = 'START s0 = node:special_event_index(event="%s")\
                MATCH (s0)-[r]-(s) RETURN s.event_id as event' % theme_name
    event_result = graph.run(s_string)
    event_list = []
    for event in event_result:
        event_value = event['event']
        event_list.append(event_value)
    print event_list, '=========='
    detail_result = event_detail_search(event_list, sort_flag)
    return detail_result
Example #4
0
def compare_group_event(g_name1, g_name2, submit_user, flag):
    group_id1 = p.get_pinyin(g_name1)
    group_id1 = group_id1.lower()
    uid_string1 = es_group.get(index=group_name, doc_type=group_type, id=group_id1,  fields=['people'])
    uid_list1 = uid_string1['fields']['people'][0].split('&')

    group_id2 = p.get_pinyin(g_name2)
    group_id2 = group_id2.lower()
    uid_string2 = es_group.get(index=group_name, doc_type=group_type, id=group_id2,  fields=['people'])
    uid_list2 = uid_string2['fields']['people'][0].split('&')
    
    uid_list_all = [uid_list1, uid_list2]
    event_list = []
    for user_result in uid_list_all:
        event_list1 = []

        user_list, org_list = search_user_type(user_result)
        for uid in user_list:
            c_string = 'start n=node:'+node_index_name+'("'+people_primary+':'+str(uid)+'") match (n)-[r]-(e:Event) return e'
            result = graph.run(c_string)
            for event in result:
                # print event,'---------'
                # if event:
                event_dict = dict(event)
                event_id = event_dict['e']['event_id']
                event_list1.append(event_id)
        for uid in org_list:
            c_string = 'start n=node:'+org_index_name+'("'+org_primary+':'+str(uid)+'") match (n)-[r]-(e:Event) return e'
            result = graph.run(c_string)
            for event in result:
                # print event,'---------'
                # if event:
                event_dict = dict(event)
                event_id = event_dict['e']['event_id']
                event_list1.append(event_id)
        event_list.append(event_list1)
    if flag == 'all':
        event_list1 = [i for i in set(event_list[0])]
        event_list2 = [i for i in set(event_list[1])]
        detail_result1 = event_detail_search(event_list1,submit_user)
        detail_result2 = event_detail_search(event_list2,submit_user)

    if flag == 'same':
        same_u = set(event_list[0])&set(event_list[1])
        same_u = [i for i in same_u]
        detail_result1 = event_detail_search(same_u,submit_user)
        detail_result2 = event_detail_search(same_u,submit_user)

    if flag == 'diff':
        diff_u1 = set(event_list[0]) - (set(event_list[0])&set(event_list[1]))
        diff_u1 = [i for i in diff_u1]
        diff_u2 = set(event_list[1]) - (set(event_list[0])&set(event_list[1]))
        diff_u2 = [i for i in diff_u2]
        detail_result1 = event_detail_search(diff_u1,submit_user)
        detail_result2 = event_detail_search(diff_u2,submit_user)
    return {'detail_result1':detail_result1,'detail_result2':detail_result2}
Example #5
0
def compare_group_event(g_name1, g_name2, submit_user, flag):
    group_id1 = p.get_pinyin(g_name1)
    group_id1 = group_id1.lower()
    uid_string1 = es_group.get(index=group_name,
                               doc_type=group_type,
                               id=group_id1,
                               fields=['people'])
    uid_list1 = uid_string1['fields']['people'][0].split('&')

    group_id2 = p.get_pinyin(g_name2)
    group_id2 = group_id2.lower()
    uid_string2 = es_group.get(index=group_name,
                               doc_type=group_type,
                               id=group_id2,
                               fields=['people'])
    uid_list2 = uid_string2['fields']['people'][0].split('&')

    uid_list_all = [uid_list1, uid_list2]
    event_list = []
    for user_result in uid_list_all:
        event_list1 = []
        print user_result
        for user in user_result:
            user_value = user
            c_string = 'START s0 = node:node_index(uid="' + str(
                user_value) + '") '
            c_string += 'MATCH (s0)-[r]-(s1:Event) return s1 LIMIT 50'
            print c_string
            result = graph.run(c_string)
            for i in list(result):
                end_id = dict(i['s1'])
                event_list1.append(end_id['event_id'])
        event_list.append(event_list1)
    if flag == 'all':
        event_list1 = [i for i in set(event_list[0])]
        event_list2 = [i for i in set(event_list[1])]
        detail_result1 = event_detail_search(event_list1, submit_user)
        detail_result2 = event_detail_search(event_list2, submit_user)

    if flag == 'same':
        same_u = set(event_list[0]) & set(event_list[1])
        same_u = [i for i in same_u]
        detail_result1 = event_detail_search(same_u, submit_user)
        detail_result2 = event_detail_search(same_u, submit_user)

    if flag == 'diff':
        diff_u1 = set(
            event_list[0]) - (set(event_list[0]) & set(event_list[1]))
        diff_u1 = [i for i in diff_u1]
        diff_u2 = set(
            event_list[1]) - (set(event_list[0]) & set(event_list[1]))
        diff_u2 = [i for i in diff_u2]
        detail_result1 = event_detail_search(diff_u1, submit_user)
        detail_result2 = event_detail_search(diff_u2, submit_user)
    return {'detail_result1': detail_result1, 'detail_result2': detail_result2}
Example #6
0
def compare_event_group(group_name1, group_name2, sort_flag, diff):
    s_string1 = 'START s0 = node:group_index(group="%s")\
                MATCH (s0)-[r]-(s) RETURN s.uid as user_id' % group_name1
    group_result1 = graph.run(s_string1)
    event_list1 = []
    for event in group_result1:
        user_dict = dict(event)
        usd = user_dict['user_id']
        c_string = 'START s0 = node:node_index(uid="' + str(usd) + '") '
        c_string += 'MATCH (s0)-[r]-(s1:Event) return s1 LIMIT 50'
        # print c_string
        result = graph.run(c_string)
        for i in list(result):
            # print i
            end_id = dict(i['s1'])
            event_list1.append(end_id['event_id'])
    print len(event_list1)

    s_string2 = 'START s0 = node:group_index(group="%s")\
                MATCH (s0)-[r]-(s) RETURN s.uid as user_id' % group_name2
    group_result2 = graph.run(s_string2)
    event_list2 = []
    for event in group_result2:
        user_dict = dict(event)
        usd = user_dict['user_id']
        c_string = 'START s0 = node:node_index(uid="' + str(usd) + '") '
        c_string += 'MATCH (s0)-[r]-(s2:Event) return s2 LIMIT 50'
        # print c_string
        result = graph.run(c_string)
        for i in list(result):
            print i
            end_id = dict(i['s2'])
            event_list2.append(end_id['event_id'])
    print len(event_list2)

    if diff == '0':
        detail_result1 = event_detail_search(event_list1, sort_flag)
        detail_result2 = event_detail_search(event_list2, sort_flag)

    if diff == '1':
        same_e = set(event_list1) & set(event_list2)
        same_e = [i for i in same_e]
        detail_result1 = event_detail_search(same_e, sort_flag)
        detail_result2 = event_detail_search(same_e, sort_flag)

    if diff == '2':
        diff_e1 = set(event_list1) - (set(event_list1) & set(event_list2))
        diff_e1 = [i for i in diff_e1]
        diff_e2 = set(event_list2) - (set(event_list1) & set(event_list2))
        diff_e2 = [i for i in diff_e2]
        detail_result1 = event_detail_search(diff_e1, sort_flag)
        detail_result2 = event_detail_search(diff_e2, sort_flag)
    return {'detail_result1': detail_result1, 'detail_result2': detail_result2}
Example #7
0
def search_related_event(theme_name, submit_user):
    topic_id = p.get_pinyin(theme_name)
    topic_id = topic_id.lower()
    eid_string = es_event.get(index=special_event_name, doc_type=special_event_type, id=topic_id,  fields=['event'])
    event_list = eid_string['fields']['event'][0].split('&')
    related_list = []
    for en_name in event_list:
        s_string = 'START s0 = node:event_index(event_id="%s") \
                MATCH (s0)-[r]-(s3:Event) return s3' %(en_name)
        print s_string
        result = graph.run(s_string)
        for item in result:
            item_dict = dict(item)
            related_list.append(item_dict['s3']['event_id'])
    related_list = set(related_list) - set(event_list)
    related_list = [i for i in related_list]
    result = event_detail_search(related_list, submit_user)
    return result
Example #8
0
def query_group_event(group_name, sort_flag):
    s_string = 'START s0 = node:group_index(group="%s")\
                MATCH (s0)-[r]-(s) RETURN s.uid as user_id' % group_name
    group_result = graph.run(s_string)
    event_list = []
    for event in group_result:
        user_dict = dict(event)
        # print
        usd = user_dict['user_id']
        # event_list.append(event_value)
        c_string = 'START s0 = node:node_index(uid="' + str(usd) + '") '
        c_string += 'MATCH (s0)-[r]-(s1:Event) return s1 LIMIT 50'
        # print c_string
        result = graph.run(c_string)
        for i in list(result):
            print i
            end_id = dict(i['s1'])
            event_list.append(end_id['event_id'])
    print event_list
    print len(event_list)
    event_list = [i for i in set(event_list) if i != u'大学生失联']
    detail_result = event_detail_search(event_list, sort_flag)
    return detail_result
Example #9
0
def compare_event_theme(theme_name1, theme_name2, sort_flag, diff):

    s_string1 = 'START s0 = node:special_event_index(event="%s")\
                MATCH (s0)-[r]-(s) RETURN s.event_id as event' % theme_name1
    event_result1 = graph.run(s_string1)
    event_list1 = []
    for event in event_result1:
        event_value = event['event']
        event_list1.append(event_value)

    s_string2 = 'START s0 = node:special_event_index(event="%s")\
                MATCH (s0)-[r]-(s) RETURN s.event_id as event' % theme_name2
    event_result2 = graph.run(s_string2)
    event_list2 = []
    for event in event_result2:
        event_value = event['event']
        event_list2.append(event_value)

    if diff == '0':
        detail_result1 = event_detail_search(event_list1, sort_flag)
        detail_result2 = event_detail_search(event_list2, sort_flag)

    if diff == '1':
        same_e = set(event_list1) & set(event_list2)
        same_e = [i for i in same_e]
        detail_result1 = event_detail_search(same_e, sort_flag)
        detail_result2 = event_detail_search(same_e, sort_flag)

    if diff == '2':
        diff_e1 = set(event_list1) - (set(event_list1) & set(event_list2))
        diff_e1 = [i for i in diff_e1]
        diff_e2 = set(event_list2) - (set(event_list1) & set(event_list2))
        diff_e2 = [i for i in diff_e2]
        detail_result1 = event_detail_search(diff_e1, sort_flag)
        detail_result2 = event_detail_search(diff_e2, sort_flag)
    return {'detail_result1': detail_result1, 'detail_result2': detail_result2}
Example #10
0
def search_way(node1, node2, node_type1, node_type2):
    relation_type = [
        'join', 'pusher', 'maker', 'other_relationship', 'friend', 'relative',
        'colleague', 'user_tag'
    ]
    index_type_dict = {'User': '******', 'Event': 'event_index'}
    primary_idct = {'User': '******', 'Event': 'event'}
    key_dict = {'User': '******', 'Event': 'event_id'}
    origin_idlist = [node1, node2]
    print origin_idlist
    if node_type1 == 'User':
        start_node_card = related_user_search([node1], 'activeness')[0]
    else:
        start_node_card = event_detail_search([node1], 'start_ts')[0]

    if node_type2 == 'User':
        end_node_card = related_user_search([node2], 'activeness')[0]
    else:
        end_node_card = event_detail_search([node2], 'start_ts')[0]

    c_string = 'START node1 = node:' + index_type_dict[
        node_type1] + '(' + primary_idct[node_type1] + '="' + node1 + '"),'
    c_string += 'node2 = node:' + index_type_dict[
        node_type2] + '(' + primary_idct[node_type2] + '="' + node2 + '") '
    c_string += 'MATCH p = allShortestPaths(node1-[r*..5]-node2) return r'
    print c_string
    result = graph.run(c_string)

    # uid_list = []#for card
    # eid_list = []#for card
    middle_card = []  #for card, middle nodes
    uid_dict = {}  #for graph
    eid_dict = {}  #for graph
    relation_all = list(result)
    # print relation_all,'!!!!!!!!!!!!!!!1'
    relation_result = []
    relation_result2 = []
    # print [relation_all[0]['r'] , relation_all[1]['r']]
    # if relation_all[0]['r'] == relation_all[1]['r']:
    #     return 'haha'
    # else:
    #     return [relation_all[0]['r'] , relation_all[1]['r']]
    length_relation = [0, 0]
    length_relation[0] = len(relation_all)
    for relation in relation_all:
        # print list(relation['r']),'99999999999999999'
        if len(list(relation['r'])) < 2:
            return 0  #返回0 说明这两个节点有直接关系
        print relation, 'relation'
        length_relation[1] = len(list(relation['r']))
        line_rel = []
        for i in relation['r']:
            # print i
            a = walk(i)
            # print a
            this_relation = []
            # aa = []
            for m in a:  #a=[node1,r,node2]
                try:
                    m.type()
                except:
                    aa = m.labels()
                    aa = [i for i in aa]
                    mm = dict(m)
                    # print mm,'========'
                    if mm.has_key('uid'):
                        # print mm
                        if m['uid'] == '1765891182':
                            print a, m, '----000000000000000000'
                        eu_name = user_name_search(m['uid'])
                        if uid_dict.has_key(m['uid']) == False:
                            uid_dict[m['uid']] = eu_name
                            if m['uid'] not in origin_idlist:
                                # print m['uid'], origin_idlist,'inininini'
                                mid_card = related_user_search([m['uid']],
                                                               'activeness')
                                if len(mid_card) == 0:
                                    middle_card.append({'uid': m['uid']})
                                else:
                                    # print len(mid_card), '!!!!!!!!!!!!!'
                                    middle_card.append(mid_card[0])
                        this_relation.append([m['uid'], eu_name])
                        if [m['uid'], eu_name] not in line_rel:
                            line_rel.append([m['uid'], eu_name])
                    elif mm.has_key('event_id'):
                        eu_name = event_name_search(m['event_id'])
                        if eid_dict.has_key(m['event_id']) == False:
                            eid_dict[m['event_id']] = eu_name
                            if m['event_id'] not in origin_idlist:
                                mid_card = event_detail_search([m['event_id']],
                                                               'start_ts')
                                if len(mid_card) == 0:
                                    middle_card.append(
                                        {'event_id': m['event_id']})
                                else:
                                    middle_card.append(mid_card[0])
                        this_relation.append([m['event_id'], eu_name])
                        if [m['event_id'], eu_name] not in line_rel:
                            line_rel.append([m['event_id'], eu_name])
                    else:
                        break

                if len(this_relation) > 1:
                    if this_relation not in relation_result:
                        relation_result.append(this_relation)
        # print len(line_rel), length_relation[1],'000000000'
        # if len(line_rel) == length_relation[1]:
        #     relation_result2.append(line_rel)
    return {'relation':relation_result, 'start_node_card':start_node_card, 'end_node_card':end_node_card,\
            'user_nodes':uid_dict, 'event_nodes': eid_dict, 'middle_card':middle_card,'length_relation':length_relation}
Example #11
0
def search_related_e_card(item, layer):
    query_body = {
        "query": {
            'bool': {
                'should': [{
                    "wildcard": {
                        'keywords': '*' + str(item.encode('utf-8')) + '*'
                    }
                }, {
                    "wildcard": {
                        'en_name': '*' + str(item.encode('utf-8')) + '*'
                    }
                }, {
                    "wildcard": {
                        'name': '*' + str(item.encode('utf-8')) + '*'
                    }
                }]
            }
        },
        'size': 10
    }
    only_eid = []
    event_id_list = []
    u_nodes_list = {}
    e_nodes_list = {}
    event_relation = []
    try:
        name_results = es_event.search(index=event_name, doc_type=event_type, \
                body=query_body, fields=['name','en_name'])['hits']['hits']
        print name_results, '@@@@@@@@@@@@@@@@@'
    except:
        return 'node does not exist'
    print name_results, '@@@@@@@@@@@@@@@@@------------#######################'
    if len(name_results) == 0:
        return 'node does not exist'
    for i in name_results:
        print i
        name = i['fields']['name'][0]
        en_name = i['fields']['en_name'][0]
        only_eid.append(en_name)
        e_nodes_list[en_name] = name
        event_id_list.append([en_name, name])

    print len(event_id_list), '========='
    if layer == '1':
        for eid_value in event_id_list:
            c_string = 'START s0 = node:event_index(event="' + str(
                eid_value[0]) + '") '
            c_string += 'MATCH (s0)-[r1]-(s1:Event) return s0,r1,s1 LIMIT 100'
            result = graph.run(c_string)
            for i in list(result):
                m_id = dict(i['s1'])['event_id']
                if m_id not in only_eid:
                    only_eid.append(m_id)
        result_card = event_detail_search(only_eid, 'start_ts')

    if layer == '2':
        for eid_value in event_id_list:
            c_string = 'START s0 = node:event_index(event="' + str(
                eid_value[0]) + '") '
            c_string += 'MATCH (s0)-[r1]-(ss)-[r]-(s1:Event) return ss, s1 LIMIT 100'
            result = graph.run(c_string)
            for i in list(result):
                ss_id = dict(i['ss'])
                # print ss_id,'???????????/'
                if ss_id.has_key('uid') or ss_id.has_key('event_id'):
                    m_id = dict(i['s1'])['event_id']
                    if m_id not in only_eid:
                        only_eid.append(m_id)
                else:
                    print '00000'
        print only_eid, '000000000000'
        result_card = event_detail_search(only_eid, 'start_ts')

    if layer == 'all':
        eid_list_all = []
        result = search_related_event_f(item)
        if result == 'node does not exist':
            return 'node does not exist'
        eid_dict = result['event_nodes']
        for k, v in eid_dict.iteritems():
            eid_list_all.append(k)
        result_card = event_detail_search(eid_list_all, 'start_ts')

    return result_card