本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。
Apt安装
Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics
我这里安装是添加软件源的方法
最新版本
wget -O - https://debian.neo4j.com/neotechnology.gpg.key | sudo apt-key add –
echo 'deb https://debian.neo4j.com stable latest' | sudo tee /etc/apt/sources.list.d/neo4j.list
sudo apt-get update
sudo apt install neo4j #默认安装最新版
配置Neofj
随后,配置可以远程访问
sudo vim /etc/neo4j/neo4j.conf
在文中添加
server.logs.config=/etc/neo4j/server-logs.xml
server.logs.user.config=/etc/neo4j/user-logs.xml
server.default_listen_address=0.0.0.0
随后配置开机自启动
systemctl start neo4j.service
systemctl status neo4j.service
启动成功
Neo4j编程
Neo4j使用节点(Node)和关系(Relationship)来存储和表示数据。本文档将通过一个综合的电影知识图谱示例,展示如何在Neo4j中创建复杂的图模型并生成可视化效果。
创建节点
创建电影节点
// 创建经典电影节点
CREATE (matrix:Movie {
title: "The Matrix",
released: 1999,
genre: ["Action", "Sci-Fi"],
rating: 8.7,
budget: 63000000,
boxOffice: 467000000
})
CREATE (godfather:Movie {
title: "The Godfather",
released: 1972,
genre: ["Crime", "Drama"],
rating: 9.2,
budget: 6000000,
boxOffice: 287000000
})
CREATE (inception:Movie {
title: "Inception",
released: 2010,
genre: ["Action", "Sci-Fi", "Thriller"],
rating: 8.8,
budget: 160000000,
boxOffice: 836000000
})
CREATE (avatar:Movie {
title: "Avatar",
released: 2009,
genre: ["Action", "Adventure", "Sci-Fi"],
rating: 7.8,
budget: 237000000,
boxOffice: 2923000000
})
创建演员结点
// 创建演员节点
CREATE (keanu:Actor {
name: "Keanu Reeves",
born: 1964,
nationality: "Canadian",
awards: ["Saturn Award", "MTV Movie Award"]
})
CREATE (laurence:Actor {
name: "Laurence Fishburne",
born: 1961,
nationality: "American",
awards: ["Emmy Award", "Tony Award"]
})
CREATE (brando:Actor {
name: "Marlon Brando",
born: 1924,
nationality: "American",
awards: ["Academy Award", "Golden Globe"]
})
CREATE (dicaprio:Actor {
name: "Leonardo DiCaprio",
born: 1974,
nationality: "American",
awards: ["Academy Award", "Golden Globe", "BAFTA"]
})
CREATE (cameron_diaz:Actor {
name: "Cameron Diaz",
born: 1972,
nationality: "American",
awards: ["Golden Globe Nomination"]
})
创建导演节点
// 创建导演节点
CREATE (wachowski:Director {
name: "The Wachowskis",
activeYears: "1996-present",
nationality: "American",
knownFor: ["Sci-Fi", "Action"]
})
CREATE (coppola:Director {
name: "Francis Ford Coppola",
born: 1939,
nationality: "American",
awards: ["Academy Award", "Palme d'Or"],
knownFor: ["Drama", "Crime"]
})
CREATE (nolan:Director {
name: "Christopher Nolan",
born: 1970,
nationality: "British",
awards: ["Academy Award", "BAFTA"],
knownFor: ["Thriller", "Sci-Fi"]
})
CREATE (cameron:Director {
name: "James Cameron",
born: 1954,
nationality: "Canadian",
awards: ["Academy Award", "Golden Globe"],
knownFor: ["Sci-Fi", "Action", "Adventure"]
})
创建制片公司节点
// 创建制片公司节点
CREATE (warner:Studio {
name: "Warner Bros.",
founded: 1923,
headquarters: "Burbank, California",
revenue: 15000000000
})
CREATE (paramount:Studio {
name: "Paramount Pictures",
founded: 1912,
headquarters: "Hollywood, California",
revenue: 3800000000
})
CREATE (fox:Studio {
name: "20th Century Fox",
founded: 1935,
headquarters: "Los Angeles, California",
revenue: 9000000000
})
创建用户节点
// 创建用户节点
CREATE (alice:User {
name: "Alice Johnson",
age: 28,
location: "New York",
favoriteGenre: ["Sci-Fi", "Action"]
})
CREATE (bob:User {
name: "Bob Smith",
age: 35,
location: "Los Angeles",
favoriteGenre: ["Drama", "Crime"]
})
CREATE (carol:User {
name: "Carol Williams",
age: 42,
location: "Chicago",
favoriteGenre: ["Thriller", "Adventure"]
})
创建关系
演员-电影关系
匹配已存在的节点并创建关系
MATCH (keanu:Actor {name: "Keanu Reeves"})
MATCH (matrix:Movie {title: "The Matrix"})
CREATE (keanu)-[:ACTED_IN {role: "Neo", screenTime: 90}]->(matrix)
MATCH (laurence:Actor {name: "Laurence Fishburne"})
MATCH (matrix:Movie {title: "The Matrix"})
CREATE (laurence)-[:ACTED_IN {role: "Morpheus", screenTime: 65}]->(matrix)
MATCH (brando:Actor {name: "Marlon Brando"})
MATCH (godfather:Movie {title: "The Godfather"})
CREATE (brando)-[:ACTED_IN {role: "Vito Corleone", screenTime: 85}]->(godfather)
MATCH (dicaprio:Actor {name: "Leonardo DiCaprio"})
MATCH (inception:Movie {title: "Inception"})
CREATE (dicaprio)-[:ACTED_IN {role: "Dom Cobb", screenTime: 120}]->(inception)
MATCH (cameron_diaz:Actor {name: "Cameron Diaz"})
MATCH (avatar:Movie {title: "Avatar"})
CREATE (cameron_diaz)-[:ACTED_IN {role: "Dr. Grace Augustine", screenTime: 45}]->(avatar)
导演-电影关系
MATCH (wachowski:Director {name: "The Wachowskis"})
MATCH (matrix:Movie {title: "The Matrix"})
CREATE (wachowski)-[:DIRECTED {year: 1999, budget: 63000000}]->(matrix)
MATCH (coppola:Director {name: "Francis Ford Coppola"})
MATCH (godfather:Movie {title: "The Godfather"})
CREATE (coppola)-[:DIRECTED {year: 1972, budget: 6000000}]->(godfather)
MATCH (nolan:Director {name: "Christopher Nolan"})
MATCH (inception:Movie {title: "Inception"})
CREATE (nolan)-[:DIRECTED {year: 2010, budget: 160000000}]->(inception)
MATCH (cameron:Director {name: "James Cameron"})
MATCH (avatar:Movie {title: "Avatar"})
CREATE (cameron)-[:DIRECTED {year: 2009, budget: 237000000}]->(avatar)
制片公司-电影关系
MATCH (warner:Studio {name: "Warner Bros."})
MATCH (matrix:Movie {title: "The Matrix"})
CREATE (warner)-[:PRODUCED {investment: 63000000, profit: 404000000}]->(matrix)
MATCH (paramount:Studio {name: "Paramount Pictures"})
MATCH (godfather:Movie {title: "The Godfather"})
CREATE (paramount)-[:PRODUCED {investment: 6000000, profit: 281000000}]->(godfather)
MATCH (warner:Studio {name: "Warner Bros."})
MATCH (inception:Movie {title: "Inception"})
CREATE (warner)-[:PRODUCED {investment: 160000000, profit: 676000000}]->(inception)
MATCH (fox:Studio {name: "20th Century Fox"})
MATCH (avatar:Movie {title: "Avatar"})
CREATE (fox)-[:PRODUCED {investment: 237000000, profit: 2686000000}]->(avatar)
用户评分关系
MATCH (alice:User {name: "Alice Johnson"})
MATCH (matrix:Movie {title: "The Matrix"})
CREATE (alice)-[:RATED {score: 9.5, timestamp: datetime("2024-01-15T14:30:00")}]->(matrix)
MATCH (alice:User {name: "Alice Johnson"})
MATCH (inception:Movie {title: "Inception"})
CREATE (alice)-[:RATED {score: 9.0, timestamp: datetime("2024-02-10T19:45:00")}]->(inception)
MATCH (bob:User {name: "Bob Smith"})
MATCH (godfather:Movie {title: "The Godfather"})
CREATE (bob)-[:RATED {score: 10.0, timestamp: datetime("2024-01-20T21:15:00")}]->(godfather)
MATCH (carol:User {name: "Carol Williams"})
MATCH (avatar:Movie {title: "Avatar"})
CREATE (carol)-[:RATED {score: 8.5, timestamp: datetime("2024-03-05T16:20:00")}]->(avatar)
MATCH (carol:User {name: "Carol Williams"})
MATCH (inception:Movie {title: "Inception"})
CREATE (carol)-[:RATED {score: 9.2, timestamp: datetime("2024-02-28T20:10:00")}]->(inception)
演员间合作关系
MATCH (keanu:Actor {name: "Keanu Reeves"})
MATCH (laurence:Actor {name: "Laurence Fishburne"})
CREATE (keanu)-[:COLLABORATED_WITH {movie: "The Matrix", year: 1999}]->(laurence)
可视化
Neo4j Browser中生成完整的图可视化:
MATCH (n)-[r]->(m)
RETURN n, r, m
LIMIT 100
电影生态系统可视化
MATCH path = (n)-[*1..2]-(movie:Movie {title: "The Matrix"}) RETURN path
演员关系网络
// 显示演员之间的协作网络
MATCH (actor1:Actor)-[:ACTED_IN]->(movie:Movie)<-[:ACTED_IN]-(actor2:Actor)
WHERE actor1 <> actor2
RETURN actor1, movie, actor2