neo4j 社交查询

原文链接: neo4j 社交查询

上一篇: neo4j 切换数据库

下一篇: neo4j 导入数据的优化

创建csv格式文件

人物数目,和朋友概率.

import random
from py2neo import Graph, Node, Relationship
 
 

def create_friend_csv(cnt, p):
    with open("node.csv", mode='w+', encoding="utf8") as f:
        s = "id,age"
        for i in range(cnt):
            s += "\n%d,%d" % (i, random.randint(1, 100))
        f.write(s)

    with open("friend.csv", mode='w+', encoding='utf8') as f:
        # 表示a,b在y年相识,a->b 表示a认识b
        s = "a,b,y"
        for i in range(cnt):
            # 创建朋友关系,朋友个数为1,到理论个数之间的任意值
            for k in range(random.randint(1, int(cnt * p))):

                j = random.randint(0, cnt)
                # 自己不能喝自己是朋友...
                while j == i:
                    j = random.randint(0, cnt)
                s += "\n%d,%d,%d" % (i, j, random.randint(1900, 2020))
        f.write(s)


create_friend_csv(100000, 0.0001)

导入数据到数据库

match (n)
detach delete n



using periodic commit 10000
load csv with headers from 'file:///node.csv'
as line create (:Person{id:line.id,age:toint(line.age)})

CREATE INDEX ON :Person(id)


using periodic commit 10000
load csv with headers from 'file:///friend.csv' as line
match (n:Person{id:line.a}),(m:Person{id:line.b})
create (n)-[:Friend{year:toInteger(line.y)}]->(m)

132117_40TU_2856757.png

132915_QyJy_2856757.png

不加索引的话,花费时间比较长.....

Set 199577 properties, created 199577 relationships, completed after 5710524 ms.

查询

六度理论

两个人之间可以通过六个人相互认识,在十万个节点,万分之一的概率下,基本符合

match p=(n:Person{id:"0"})-[r*1..6]-(m)
return count( distinct m)

134842_sfi2_2856757.png

查询自己和自己是好朋友...在创建关系时,没有添加过滤条件....

match p=(n:Person)-[]-(m:Person)
where n.id=m.id
return p

133846_9mnW_2856757.png

match p=shortestPath((n:Person{id:"0"})-[r*]-(m:Person{id:"100"}))
return p

142147_6Fdf_2856757.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值