neo4j实现社交推荐(五)

297 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第12天,点击查看活动详情

目录

前言

在第四篇中建立了基础的社交人物标签跟好友关系信息,我们本篇先补充各个人物的好友节点,丰富我们的知识图谱并可以更好的看到数据的展示效果、然后通过查询语句来查看共同关注、可能认识的人、我有几个好友也关注了他等功能

实现

创建节点

王维的好友:张九龄、李龟年、孟浩然、岑参、元常、神会禅师、晁衡 李白的好友里已经有王维的好友:孟浩然 创建剩余的好友:张九龄、李龟年、岑参、元常、神会禅师、晁衡

create (n:SocialUser {name:'张九龄'}) return n;
create (n:SocialUser {name:'李龟年'}) return n;
create (n:SocialUser {name:'岑参'}) return n;
create (n:SocialUser {name:'元常'}) return n;
create (n:SocialUser {name:'神会禅师'}) return n;
create (n:SocialUser {name:'晁衡'}) return n;

上面的都是李白的好友,所以我们指向关系不需要筛选,直接指向标签

match (a:SocialUser {name:'王维'}),(b:SocialUser) 
    where b.name in ['张九龄','李龟年','孟浩然','岑参','元常','神会禅师','晁衡']
    merge (a)-[:FRIEND]->(b) 
    return a,b

查看结果 在这里插入图片描述

基础查询语句

查询关键字:MATCH 创建关键字:CREATE 删除关键字:DELETE
设置属性关键字:SET 设置关联关系:MERGE

1. 查询语句

1.1 查询节点

// 查询所有节点
MATCH (n) RETURN n
// 查询某个标签的全部节点
MATCH (n) RETURN n
// 查询某个标签中等于某个属性的节点
MATCH (n:SocialUser {name:'李白'}) RETURN n 
// in的操作 查询n的节点名称为数组里的
MATCH (n:SocialUser) WHERE n.name in ['李白','杜甫'] RETURN n 

1.2 查询关系

// 查询所有具有对外关系的节点
MATCH (a)-->() RETURN a
// 查询所有具有被指向关系的节点
MATCH ()-->(a) RETURN a
// 查询所有存在的关系
MATCH ()-[r]->() RETURN r

创建语句

// 创建一个标签为Person的节点,节点有一个name属性,属性值为'John'
CREATE (n:Person{name:'John'}) RETURN n
// 给a节点设置一个age属性,属性值为34
MATCH (a:Person{name:'Liz'}) SET a.age = 34

删除语句

// 删除所有节点和关系,MATCH是匹配操作,()代表所有节点,DELETE为删除操作
MATCH (n) DETACH DELETE n
// 删除a节点的test属性
MATCH ... REMOVE a.test
// 删除a节点
MATCH ... DELETE a
// 删除Person标签的BIGBROTHER关系
match (n:Person)<-[r:BIGBROTHER]-(m:Person) DELETE  r