Neo4j常用語法-path

在 Neo4j 中,Path(路徑) 是連接兩個或多個節點的關系序列,是圖查詢的核心概念之一。理解 Path 的用法對于復雜圖分析至關重要
關鍵特性:
有向性:路徑中的關系具有方向
可變長度:路徑可以包含 0 個或多個關系
類型約束:關系可以指定類型(如 :ACTED_IN)
屬性過濾:節點和關系可以通過屬性過濾

(1)簡單路徑匹配

MATCH p = (a:Person)-[:FRIEND]->(b:Person)
RETURN p

(2)可變長度路徑

MATCH p = (a:Person)-[:FRIEND*2..5]->(b:Person)  // 2到5跳的路徑
RETURN p

(3)任意關系類型

MATCH p = (a:Person)-[*]->(b:Person)  // 任意類型和長度的關系
RETURN p

(4)特定關系類型組合

MATCH p = (a:Person)-[:ACTED_IN|DIRECTED*]->(m:Movie)
RETURN p

(5)Path 的函數與操作

MATCH p = (a:User)-[:FRIEND*]->(b:User)
RETURN p

在這里插入圖片描述
在這里插入圖片描述

// 返回關系數量
MATCH p = (a:User)-[:FRIEND*]->(b:User)
RETURN length(p) AS pathLength  

在這里插入圖片描述
(6)提取路徑節點和關系

MATCH p = (a:User)-[:FRIEND*]->(b:User)
RETURN nodes(p) AS pathNodes,      // 返回節點列表relationships(p) AS rels    // 返回關系列表

在 Neo4j 的路徑匹配中,*…3 表示 ** 路徑長度(關系數量)** 的范圍,不包含節點自身。具體規則如下:
路徑深度的含義:
*n…m:表示路徑中關系的數量范圍(n 到 m 跳)
不包含節點自身:即使 n=0,也需要至少一個關系才能構成路徑
示例:
*0…3:允許 0 到 3 跳的路徑(但 0 跳路徑無實際意義,因為至少需要一個關系)
*1…3:允許 1 到 3 跳的路徑(最常見的用法)
*…3:等價于 *1…3(默認從 1 開始)

//只查詢Tom Cruise 的person節點指向任一節點,關系邊的長度為1或者2的數據
MATCH path = (p:Person {name: "Tom Cruise"})-[*..2]-(other)
RETURN path
LIMIT 100  // 限制結果數量,避免返回過多路徑

結果如下圖所示
圖展示形式
在這里插入圖片描述
Text展示形式
在這里插入圖片描述

//只查詢Tom Cruise 的person節點指向任一節點,關系邊的長度只為3的數據
MATCH path = (p:Person {name: "Tom Cruise"})-[*3..3]-(other)
RETURN path
LIMIT 100  // 限制結果數量,避免返回過多路徑

關鍵參數:
*…2:表示路徑最大深度為 2 跳 (查詢Tom Cruise到任一節點,任一關系路徑為1或者2的數據)
(p:Person {name: “Tom Cruise”}):起始節點
(other):匹配任意類型的節點

//關系類型的路徑查詢
MATCH path = (p:Person {name: "Tom Cruise"})-[r:ACTED_IN|REVIEWED|FOLLOWS*..3]-(other)
RETURN path
LIMIT 100

在這里插入圖片描述
如上圖所示,p-m,有兩個路徑,一個長度是5,一個長度3,我現在想獲取最短路徑

基本最短路徑查詢
在 Neo4j 中,查找兩個節點之間的最短路徑可以使用 shortestPath 或 allShortestPaths 函數

MATCH (p:Person {name: "Tom Cruise"}), (m:Movie {title: "One Flew Over the Cuckoo's Nest"})
MATCH path = shortestPath((p)-[*]-(m))  // 查找最短路徑
RETURN path

如圖所示:
在這里插入圖片描述

關鍵參數:
[*]:表示任意類型和長度的關系
shortestPath:返回單條最短路徑
如果存在多條相同長度的最短路徑,僅返回其中一條

//指定關系類型的最短路徑
//如果只關心特定關系類型(如 ACTED_IN、DIRECTED 等):
MATCH (p:Person {name: "Tom Cruise"}), (m:Movie {title: "One Flew Over the Cuckoo's Nest"})
MATCH path = shortestPath((p)-[:ACTED_IN|DIRECTED|REVIEWED|FOLLOWS*]-(m))
RETURN path
//限制路徑深度:如果圖很大,可設置最大深度(但可能錯過真實最短路徑)
MATCH path = shortestPath((p)-[*..10]-(m))  // 最大深度10

Path 的典型應用場景
(7)社交網絡分析

// 查找共同好友(查找Alice和Bob的共同朋友)
MATCH (a:Person {name: "Alice"})-[:FRIEND]-(f:Person)-[:FRIEND]-(b:Person {name: "Bob"})
RETURN f.name AS mutualFriend

(8)推薦系統

// 基于共同興趣推薦
MATCH (u:User {id: 123})-[:LIKES]->(p:Product)<-[:LIKES]-(other:User)
MATCH path = (other)-[:LIKES]->(reco:Product)
WHERE NOT EXISTS((u)-[:LIKES]->(reco))
RETURN reco.name AS recommendation, COUNT(path) AS score
ORDER BY score DESC//該語句分析
1. 從用戶123出發,找到他喜歡的產品集合P
2. 找到所有喜歡P中產品的其他用戶集合U
3. 收集U中用戶喜歡的所有產品集合R
4. 從R中排除用戶123已經喜歡的產品
5. 統計每個剩余產品被多少個U中的用戶喜歡
6. 按統計結果排序,生成推薦列表

(9)知識圖譜路徑分析

// 查找藥物與疾病的關系路徑
MATCH p = (d:Drug)-[:TREATS|INTERACTS|METABOLIZED_BY*]->(dis:Disease)
WHERE d.name = "阿司匹林" AND dis.name = "心臟病"
RETURN p

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/85930.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/85930.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/85930.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從 Cluely 融資看“AI 協同開發”認證:軟件考試應該怎么升級?

AI 工具大爆發&#xff0c;軟件考試卻還停在“純手寫”時代&#xff1f; 2025 年 6 月&#xff0c;一個標語寫著 “Cheat on Everything”&#xff08;對&#xff0c;意思就是“什么都能開掛”&#xff09;的 AI 初創公司——Cluely&#xff0c;正式宣布獲得由 a16z 領投的 1 …

商品中心—10.商品B端搜索系統的說明文檔

大綱 1.商品B端搜索系統的運行流程 緩存和索引設計 2.商品B端搜索系統監聽數據變更與寫入ES索引 3.商品B端搜索系統的歷史搜索詞的實現 4.商品B端搜索系統的搜索詞補全的實現 5.商品B端搜索系統的搜索接口實現 6.索引重建 1.商品B端搜索系統的運行流程 緩存和索引設計 …

HCIP-Datacom Core Technology V1.0_4 OSPF路由計算

ospf是如何計算生成這些路由呢&#xff0c; 區域內路由計算 LSA概述 同一個區域內路由器去進行一個數據庫同步&#xff0c;形成一個LSDB&#xff0c;那么數據庫里面所存在的LSA,是如何利用它去進行計算和生成路由的呢&#xff0c;以及這些LSA分別包含了哪些信息&#xff0c;比…

微服務拆分之術與道:從原則到實踐的深度解析

引言&#xff1a;微服務的塞壬之歌 - 超越單體巨石 故事要從一家名為“巨石公司”&#xff08;Monolith Inc.&#xff09;的虛構企業說起。它的旗艦產品曾是公司的驕傲&#xff0c;但隨著歲月流逝&#xff0c;這個系統逐漸演變成了一個“大泥球”&#xff08;Big Ball of Mud&a…

【新手向】GitHub Desktop 的使用說明(含 GitHub Desktop 和 Git 的功能對比)

GitHub Desktop 是 GitHub 公司推出的一款桌面應用程序&#xff0c;旨在幫助開發人員更輕松地使用 GitHub&#xff0c;以下是其簡單的使用說明&#xff1a; 安裝與登錄 下載 GitHub Desktop |GitHub 桌面 訪問GitHub Desktop 官方網站&#xff0c;根據自己的操作系統下載對應的…

Linux驅動編程 - gpio、gpiod函數

????? 目錄 簡介&#xff1a; 1、GPIO 子系統有兩套API&#xff1a; 一、GPIO新、舊版互相兼容轉換 API 1、轉化函數 二、基于描述符接口(descriptor-based) &#xff08;以"gpiod_"為前綴&#xff09; 1、獲取 GPIO 2.1 struct gpio_desc *gpiod_get(s…

Tensorflow推理時遇見PTX錯誤,安裝CUDA及CuDNN, 解決問題!

問題原因&#xff1a; 使用TensorFlow一個小模型是進行推理的時候&#xff0c;報了PTX錯誤&#xff1a; Traceback (most recent call last): 20273 2025-06-18 10:20:38.345 INFO 1 --- [checkTask-1] c.l.a.d.a.util.AnalyzeCommonHelper : File "/home/python/commo…

C# 網絡編程-關于HTTP/HTTPS的基礎(一)

一、HTTP基礎概念 1. 請求-響應模型 HTTP是基于客戶端-服務器的無狀態協議&#xff0c;流程如下&#xff1a; 客戶端&#xff08;如瀏覽器&#xff09;發起請求。服務器接收請求并處理。服務器返回響應&#xff0c;包含狀態碼、Header和響應體。連接關閉&#xff0c;后續請求…

小程序右上角○關閉事件

小程序用戶真實離開事件追蹤&#xff1a;一場與技術細節的博弈 在數據分析的場景下&#xff0c;精準捕捉用戶行為至關重要。我們遇到了這樣一個需求&#xff1a;在小程序的埋點方案中&#xff0c;只記錄用戶真正意義上的離開&#xff0c;即通過點擊小程序右上角關閉按鈕觸發的…

數據庫高性能應用分析報告

數據庫高性能應用分析報告 引言摘要 在數字經濟加速發展的今天&#xff0c;數據庫性能已成為企業核心競爭力的關鍵要素。根據Gartner 2024年最新研究&#xff0c;全球企業因數據庫性能問題導致的直接經濟損失高達每年420億美元&#xff0c;同時性能優化帶來的業務提升可達到2…

Java使用itext pdf生成PDF文檔

Java使用itext pdf生成PDF文檔 Java使用itextpdf生成PDF文檔 在日常開發中&#xff0c;我們經常需要生成各種類型的文檔&#xff0c;其中PDF是最常用的一種格式。本文將介紹如何使用Java和iText庫生成包含中文內容的PDF文檔&#xff0c;并通過一個具體的示例來展示整個過程。…

利用VBA將Word文檔修改為符合EPUB3標準規范的HTML文件

Word本身具有將docx文件轉換為HTML文件的功能&#xff0c;但是轉換出來的HTML文檔源代碼令人不忍卒讀&#xff0c;占用空間大&#xff0c;可維護性極差&#xff0c;如果想給HTML文檔加上點自定義交互行為&#xff0c;也不是一般的麻煩。如果文檔中包含注釋&#xff0c;對于Word…

開發語言本身只是提供了一種解決問題的工具

前言 你是否曾經注意到&#xff0c;在中國的軟件工程師日常工作中&#xff0c;他們使用的工具界面大多為英文&#xff1f;從代碼編輯器到開發框架文檔&#xff0c;再到錯誤信息提示框&#xff0c;英語似乎已經成為了計算機領域事實上的標準語言。那么為什么在全球化日益加深的…

2024計算機二級Python真題精講|第一套(易錯點分析)

一、選擇題 1.計算機完成一條指令所花費的時間稱為一個( )。 A.執行時序 B.執行速度 C.執行速度 D.指令周期 答案 D 一般把計算機完成一條指令所花費發時間稱為一個指令周期。指令周期越短&#xff0c;指令執行就越快。 2.順序程序不具有&#xff08; &#xf…

BGP路由反射器(RR)實驗詳解,結尾有詳細腳本

目錄 路由反射器基礎概念 實驗拓撲與設計 實驗配置步驟 配置驗證與排錯 實驗總結 完整配置命令集 路由反射器基礎概念 在傳統的IBGP網絡中&#xff0c;為了防止路由環路&#xff0c;BGP規定通過IBGP學到的路由不能再傳遞給其他IBGP對等體&#xff0c;這導致所有IBGP路由…

(aaai2025) SparseViT: 用于圖像篡改檢測的Spare-Coding Transformer

論文&#xff1a;(aaai2025) SparseViT: Nonsemantics-Centered, Parameter-Efficient Image Manipulation Localization through Spare-Coding Transformer 代碼&#xff1a;https://github.com/scu-zjz/SparseViT 這個論文研究的是圖像篡改檢測&#xff08;Image Manipulatio…

C#測試調用Markdig解析Markdown的基本用法

Markdig是.NET平臺的高性能開源Markdown處理器&#xff0c;嚴格遵循 CommonMark 標準&#xff0c;確保解析一致性&#xff0c;其核心優勢在于擴展性強&#xff1a;通過模塊化管道模型&#xff0c;可輕松添加自定義語法或修改現有邏輯。Markdig內置支持表格、任務列表、數學公式…

MySQL 主從同步完整配置示例

以下是 MySQL 主從同步完整配置示例&#xff08;基于 Linux 系統&#xff09;&#xff0c;包含主庫和從庫的配置步驟&#xff1a; 一、主庫&#xff08;Master&#xff09;配置 1. 安裝 MySQL&#xff08;以 CentOS 為例&#xff09; yum install -y mysql-server systemctl …

可信啟動與fTPM的交互驗證(概念驗證)

安全之安全(security)博客目錄導讀 目錄 一、組件構成 二、Arm FVP平臺PoC構建 三、在Armv8-A Foundation FVP上運行PoC 四、微調fTPM TA 可信啟動&#xff08;Measured Boot&#xff09;是通過密碼學方式度量啟動階段代碼及關鍵數據&#xff08;例如使用TPM芯片&#xff…

SQL Server基礎語句4:數據定義

文章目錄 一、數據庫與架構1.1 創建與刪除數據庫1.1.1 使用CREATE DATABASE語句創建數據庫1.1.2 使用DROP DATABASE語句刪除數據庫1.1.3 使用SSMS創建數據庫1.1.4 使用SSMS刪除數據庫 1.2 CREATE SCHEMA&#xff1a;創建新架構1.2.1 Schema簡介1.2.2 使用CREATE SCHEMA語句創建…