本文介紹圖數據庫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