主要内容

在社交社区中寻找朋友的朋友

此示例演示如何使用Neo4j®的MATLAB®接口搜索社交邻居以查找某人的二级朋友。假设您有存储在表示社交邻居的Neo4j数据库中的图形数据。此数据库有七个节点和八个关系。每个节点只有一个唯一的属性键名称值的范围为User1.通过User7..每个关系都有类型知道.

找到你的二等朋友User1.,使用MATLAB界面到NEO4J和有向图有关Neo4j的MATLAB接口的详细信息,请参见Neo4j数据库接口的图形数据库工作流.

本地计算机承载具有端口号的Neo4j数据库7474, 用户名neo4j,以及密码马铃薯.有关数据库中数据的可视化表示,请参见此图。

连接到Neo4j数据库

创建neo4j连接对象neo4jconn.使用URLhttp://localhost:7474/db/data, 用户名neo4j,以及密码马铃薯.

URL =.'http://localhost:7474/db/data'; 用户名=“neo4j”;密码=“matlab”;neo4jconn = neo4j(URL,用户名,密码);

检查信息Neo4j连接对象的属性neo4jconn.空白处信息属性表示成功的连接。

neo4jconn.Message
ans = []

在数据库中搜索一个人

查找具有节点标签的节点与属性名称User1..

user1 = searchnode(neo4jconn,'人',“房地产公司”,'姓名',...'适当的价值',“用户1”)
User1 = neo4jode with属性:nodeid:0 nodedata:[1×1 struct] nodelabels:'person'

搜索人的所有二级朋友

找到外向的关系User1.。若要将搜索限制为距离为两个或更少的关系,请指定2.作为名称值对参数的值'距离'.

user1_relation=searchRelation(neo4jconn,user1,“出去”,'距离'2)
用户1_关系=结构与字段:起源:0节点:[4×3表]关系:[4×5表]

将图形数据转换为有向图

使用表格user1\u关系节点,访问名称属性中显示的每个节点野田表的变量。

分配表格user1\u关系节点无可奈难.

nodestable=user1\u relation.Nodes
nodeStable =.4×3表NodeLabels Nodedata NodeObject __________ ________________________ 0'个人'[1×1 struct] [1x1 database.neo4j.http.neo4jnode] 1'person'[1×1 struct] [1x1 database.neo4j.http.neo4jnode] 2'person'[1×1 struct] [1x1 database.neo4j.http.neo4jnode] 3'person'[1×1 struct] [1x1 database.neo4j.http.neo4jode]

为表中的每一行指定行名无可奈难船名.

rownames=nodestable.Properties.rownames
船名=4×1单元阵列{'0'} {'1'} {'2'} {'3'}

进入野田可变的无可奈难每行。野田包含一系列结构。

nodedata = [nodestable.nodedata {rownames}]
nodedata =带字段的1×4结构数组:名称

取回名称字段,索引到数组中。节点名称是包含节点名称的字符向量的单元格数组。

Nodenames = {nodedata(:)。姓名}
节点名称=1×4单元阵列{'user1'} {'user3'} {'user2'} {'user4'}

创造有向图对象User1_Graph.使用Neo4Jstruct2有向图功能与存储的关系数据用户1_关系以及存储在中的节点名称节点名称.

user1_图=NEO4JSTruct2有向图(user1_关系,“NodeNames”,节点名称)
user1_graph=具有以下属性的有向图:边:[4×3表]节点:[4×3表]

要查看图形的视觉表示,请创建一个显示User1_Graph..

绘图(用户1_图,“EdgeLabel”,user1_graph.Edges.RelationType)

结交某人的朋友

检索的所有一级好友的列表User1..这User1_friend.变量是包含一级朋友的名称的字符向量的小区数组。

DISP(“User1的朋友是:”)
User1的朋友是:
user1_friend =继承人(User1_Graph,“用户1”)
user1_friend =.2×1单元阵列{'user3'} {'user2'}

找二等朋友

找到你的二等朋友User1.继承人通过循环通过一级朋友列表。用户1\u朋友\u朋友是包含二级好友名称的字符向量的单元格数组。

user1_friends_friend = {};对于i=1:length(user1\u-friend)user1\u-friends\u-friend=[user1\u-friends\u-friend;...继承者(user1_图,user1_朋友{i});终止DISP('用户1的朋友的朋友是:')
User1的朋友的朋友是:
user1\u friends\u friend=唯一(user1\u friends\u friend)
user1_friends_friend =.2×1单元阵列{'User3'}{'User4'}

删除重复的朋友

使用从二级好友列表中删除已在一级好友列表中的重复项setdiff..

finalResult=setdiff(user1\u friends\u friends,user1\u friends);disp('User1'的二级朋友是:')
User1的二级好友包括:
对于i = 1:长度(final.cresult)disp(finalResult {i})终止
User4.

最终结果是包含二级好友名称的字符向量的单元格数组。此列表删除了一级朋友的名称。

关闭数据库连接

关闭(neo4jconn)

另见

|||||

相关实例

更多关于