主要内容

在社会社区找到朋友的朋友

此示例显示如何使用MATLAB®接口搜索一个社交社区以查找一个人的二级朋友到Neo4J®。假设您具有存储在代表社交社区的Neo4j数据库上的图表数据。该数据库有七个节点和八个关系。每个节点只有一个唯一的属性键名称价值来自User1通过User7.每个关系都有类型知道

找到二级朋友User1,使用MATLAB接口的Neo4j和dig目的。有关MATLAB接口到NEO4J的详细信息,请参阅Neo4j数据库接口的图表数据库工作流程

本地计算机将Neo4j数据库带到端口号7474.、用户名neo4j.和密码matlab.有关数据库中数据的可视化表示,请参阅此图。

连接到Neo4j数据库

创建一个Neo4j连接对象neo4jconn使用URL.http:// localhost:7474 / db / data、用户名neo4j.和密码matlab

url ='http:// localhost:7474 / db / data';用户名='neo4j';密码='matlab';neo4jconn = neo4j (url、用户名、密码);

检查消息neo4j连接对象的属性neo4jconn.空白消息属性表示连接成功。

neo4jconn.message.
ans = []

在数据库中搜索一个人

找到具有节点标签的节点使用属性名User1

user1 = searchNode (neo4jconn,“人”'propertykey'“名字”......“PropertyValue”'user1'
NodeData: [1×1 struct] nodelabel: 'Person'

搜索所有的二级朋友的人

找到外向的关系User1.要将搜索限制为与两个或多个距离的关系,请指定2作为名称-值对参数的值“距离”

user1_relation = searchrelation(neo4jconn,user1,'出去'“距离”, 2)
user1_relation =.结构体字段:来源:0节点:[4×3 table]关系:[4×5 table]

将图形数据转换为定向图

使用表格user1_relation.nodes.,访问名称显示在每个节点的属性Nodedata.桌子的变量。

分配表user1_relation.nodes.nodestable

nodestable = user1_relation.nodes.
nodestable =4×3表NodeLabels NodeData NodeObject  __________ ____________ ___________________________________ 0“人”[1×1 struct] [1 x1 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.Neo4jNode]

为表中的每一行分配行名称nodestablerownames.

Rownames = nodeStable.properties.roplownames.rownames.
rownames =4×1个单元阵列{'0'} {'1'} {'2'} {'3'}

访问Nodedata.变量从nodestable每行。Nodedata.包含一个结构数组。

(nodestable nodedata =。NodeData {rownames}]
nodedata =1×4结构数组与字段:名称

检索名称从每个结构,索引到阵列的字段。Nodenames.是包含节点名称的字符向量的单元格数组。

节点名= {nodedata (:) . name}
Nodenames =.1×4个单元阵列{'User1'} {'User3'} {'User2'} {'User4'}

创建dig目的user1_graph使用neo4jstruct2digraph.函数中存储的关系数据user1_relation.和存储在的节点名称Nodenames.

user1_graph = neo4jstruct2digraph(user1_relation,'nodenames',Nodenames)
user1_graph =带有属性的数字:边缘:[4×3表]节点:[4×3表]

要查看图形的可视表示,请创建一个显示的图形user1_graph

绘图(User1_Graph,'Edgelabel',user1_graph.edges.relationtype)

找到人的朋友

检索所有一级朋友的列表User1.的user1_friendVariable是字符向量的单元格数组,其中包含一级好友的名称。

DISP(“用户1的朋友是:”
User1的朋友是:
user1_friend =继任者(user1_graph,'user1'
user1_friend =2×1个单元阵列{' User3} {User2的}

查找二级朋友

找到二级朋友User1, 跑步继承人再次通过循环一级朋友的名单。user1_friends_friend.是字符向量的单元格数组,其中包含二级朋友的名字。

user1_friends_friend = {};为了i = 1:长度(user1_friend)user1_friends_friend = [user1_friends_friend;......继承人(User1_Graph,User1_friend {i})];结尾DISP(“User1'的朋友的朋友是:'
User1的朋友的朋友是:
user1_friends_friend =唯一(user1_friends_friend)
user1_friends_friend =2×1个单元阵列{'user3'} {'user4'}

删除重复的朋友

从一级朋友列表中的二级朋友列表中删除重复项setdiff

FinalResult = SetDiff(User1_Friends_Friend,User1_Friend);DISP(“用户1的二级朋友是:”
User1的二级朋友是:
为了i = 1:length(finalResult) disp(finalResult{i})结尾
User4

最后结果是字符向量的单元格数组,其中包含二级朋友的名字。这个列表删除了一级朋友的名字。

关闭数据库连接

关上(neo4jconn)

也可以看看

|||||

相关例子

更多关于