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}
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
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
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}
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}
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}
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
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
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}
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}
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