国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

neo4j查詢兩節(jié)點之間所有路徑/關系

這篇具有很好參考價值的文章主要介紹了neo4j查詢兩節(jié)點之間所有路徑/關系。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

數(shù)據(jù)源

查詢兩節(jié)點有效的路徑

所有路徑(不準確)

有效路徑(準確)

查詢兩節(jié)點之間最短路徑

查詢兩節(jié)點之間所有的最短路徑


數(shù)據(jù)源

neo4j查詢兩節(jié)點之間所有路徑/關系

查詢兩節(jié)點有效的路徑

路徑長度(5個節(jié)點之內),一般都會做限制,否則數(shù)據(jù)庫一但內容過多就會卡死

所有路徑(不準確)

最容易想到的就是這樣寫,但是結果是不準確的。

match p = (a)-[r*..5]-(b)
where a.name = '劉備' and b.name='劉禪'
return p

neo4j查詢兩節(jié)點之間所有路徑/關系

為什么不準確?

可以看到,劉禪與關羽、張飛、糜夫人、糜芳、糜竺? 關系不是很大,因為他們是劉備的關系群

那為何還是能搜到呢?

因為我們設置了最大路徑是5

因此張飛出現(xiàn)的原因就是這樣的路徑

劉備-張飛-劉備-劉禪

劉備-張飛-關羽-劉備-劉禪

可以看到,劉備(目標節(jié)點)在一條路徑中出現(xiàn)了兩次,所以導致一些不相關的節(jié)點出現(xiàn)了,其他節(jié)點(糜夫人、糜芳、糜竺)也是類似問題。

問題驗證

我們可以把每條路徑中的節(jié)點名稱抽取出來看看

match p = (a)-[r*..5]-(b)
where a.name = '劉備' and b.name='劉禪'
return extract(n in nodes(p)| n.name)

neo4j查詢兩節(jié)點之間所有路徑/關系

與我們想的結果一致

如何解決這個問題?

問題就是在一條路徑(p)中,有重復人員的出現(xiàn)

那么解決方案就是,去掉路徑(p)中有重復人員的路徑(p)

// 相當于遍歷nodes, 每得到一個node就在nodes中找一下他自己有幾個,如果不等于1就不要了
and ALL( n1 in nodes(p) where size(filter(n2 in nodes(p) where id(n1) = id(n2)))=1 )
// 新版本neo4j 不支持fliter函數(shù) 用[]代替
and ALL( n1 in nodes(p) where size([n2 in nodes(p) where id(n1) = id(n2)])=1 )

有效路徑(準確)

最終方案

match p = (a)-[r*..5]-(b)
where a.name = '劉備' and b.name='劉禪'
and ALL( n1 in nodes(p) where size(filter(n2 in nodes(p) where id(n1) = id(n2)))=1 )
return p

// 新版
match p = (a)-[r*..5]-(b) 
where a.name = '劉備' and b.name='劉禪' 
and ALL( n1 in nodes(p) where size([n2 in nodes(p) where id(n1) = id(n2)])=1 ) 
return p

neo4j查詢兩節(jié)點之間所有路徑/關系neo4j查詢兩節(jié)點之間所有路徑/關系

查詢兩節(jié)點之間最短路徑

// TODO 還可以設置最短路徑權重

match p = shortestpath((a)-[r*0..4]-(b))
where a.name = '劉備' and b.name='劉禪'
return p

查詢兩節(jié)點之間所有的最短路徑

最短路徑如果不加權重的話,不如用所有最短路徑,因為你沒有規(guī)定最短路徑的含義。

這個也經常用,但是如果梳理兩個節(jié)點關系的時候 這樣寫會漏掉長的路徑,導致結果不完全。文章來源地址http://www.zghlxwxcb.cn/news/detail-410399.html

match p = allshortestpaths((a)-[r*0..4]-(b))
where a.name = '劉備' and b.name='劉禪'
return p

到了這里,關于neo4j查詢兩節(jié)點之間所有路徑/關系的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Neo4j-雙向關系

    Neo4j-雙向關系

    這是GraphAware中關于雙向關系的解釋。 網(wǎng)址鏈接Modelling Data in Neo4j: Bidirectional Relationships | GraphAware Neo4j中的關系必須有一個語義化的類型和方向。 沒有方向關系是模棱兩可的,上面A隊打敗B隊,如果沒有方向,就不知道誰打敗了誰。 還有一個常見的錯誤,同時創(chuàng)建兩個具有相

    2024年02月07日
    瀏覽(17)
  • Neo4j入門:手動構建節(jié)點關系

    Neo4j入門:手動構建節(jié)點關系

    目錄 一、基本cypher語句建立節(jié)點和關系 建立節(jié)點 帶屬性的節(jié)點 一次建立多個節(jié)點 建立兩個節(jié)點之間的關系 二、用CSV文件導入方法對Neo4j Desktop批量創(chuàng)建節(jié)點和關系 批量創(chuàng)建節(jié)點 創(chuàng)建一個編碼為utf-8格式的CSV文件 將CSV文件放入到我們neo4j目錄下面的import目錄下 回到Neo4j執(zhí)行

    2024年01月16日
    瀏覽(30)
  • neo4j批量追加屬性、節(jié)點、關系

    前提:這個方法是用python連接neo4j再循環(huán)執(zhí)行cql語句來實現(xiàn)的,適合1w條記錄以內的數(shù)據(jù),太大了就比較慢,平均1s執(zhí)行30條語句左右。 主要的不同就在于cql語句的使用 連接數(shù)據(jù)庫: 讀取節(jié)點表和關系表,該文件是存儲好的csv文件 中文是替代的文件名字,不是源文件名 替換

    2024年02月16日
    瀏覽(16)
  • Neo4j中創(chuàng)建關系的常用操作

    Neo4j圖數(shù)據(jù)庫遵循屬性圖模型來存儲和管理其數(shù)據(jù)。 根據(jù)屬性圖模型,關系應該是定向的。 因此,基于方向性,Neo4j關系被分為兩種類型: 單向關系 雙向關系 在使用Neo4j CQL CREATE命令來創(chuàng)建兩個節(jié)點時主要分為一下幾種場景(適用于Uni和雙向關系): 在兩個現(xiàn)有節(jié)點之間創(chuàng)

    2024年04月23日
    瀏覽(21)
  • Neo4j導入CSV文件(實體和關系)

    Neo4j導入CSV文件(實體和關系)

    打開cmd切換到neo4j安裝目錄的bin下,輸入以下命令 如果想讀取不在import directory中的CSV,則: (1)先改變neo4j默認設置,即:刪除dbms.directories.import=import或者在該語句前加“#”; (2)使用 “LOAD CSV FROM file:///C:/XXX/name.csv”(即:file:///+絕對路徑), 導入本地CSV文件 。

    2024年02月15日
    瀏覽(25)
  • neo4j cypher查詢

    1. 創(chuàng)建節(jié)點和關系 ? 使用CREATE命令創(chuàng)建節(jié)點和關系。例如,要創(chuàng)建一個名為“John”的人節(jié)點,可以使用以下命令: ? ``` CREATE (:Person {name: \\\'John\\\'}) ``` ? 這將創(chuàng)建一個類型為“Person”的節(jié)點,并將其屬性“name”設置為“John”。 ? 要創(chuàng)建一個名為“l(fā)ikes”的關系,將“John”節(jié)點

    2024年02月08日
    瀏覽(17)
  • 圖數(shù)據(jù)庫Neo4j——SpringBoot使用Neo4j & 簡單增刪改查 & 復雜查詢初步

    圖數(shù)據(jù)庫Neo4j——SpringBoot使用Neo4j & 簡單增刪改查 & 復雜查詢初步

    圖形數(shù)據(jù)庫是專門用于存儲圖形數(shù)據(jù)的數(shù)據(jù)庫,它使用圖形模型來存儲數(shù)據(jù),并且支持復雜的圖形查詢。常見的圖形數(shù)據(jù)庫有Neo4j、OrientDB等。 Neo4j是用Java實現(xiàn)的開源NoSQL圖數(shù)據(jù)庫,本篇博客介紹如何在SpringBoot中使用Neo4j圖數(shù)據(jù)庫,如何進行簡單的增刪改查,以及如何進行復雜

    2024年02月06日
    瀏覽(34)
  • Springboot集成neo4j實現(xiàn)知識圖譜關系圖

    Springboot集成neo4j實現(xiàn)知識圖譜關系圖

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 使用neo4j來完成人員關系 公司項目有一個功能需要將各個人員關系列出,在參加評選的時候,進行展示和篩選 neo4j是高性能的NOSQL圖形數(shù)據(jù)庫,在neo4j中,社區(qū)版本只能使用一個database。在neo4j中不存在表的

    2024年02月02日
    瀏覽(19)
  • Pycharm+Neo4j紅樓夢人物關系圖譜

    Pycharm+Neo4j紅樓夢人物關系圖譜

    歡迎來到我的主頁~【蠟筆小新..】 本篇收錄于專欄【Python】 如果對你有幫助,希望點贊收藏加關注啦~ 前言 neo4j基礎知識 Pycharm及代碼實現(xiàn) ?py2neo ?數(shù)據(jù)集獲取 代碼介紹 Python實驗課時,老師提到用知識圖譜構建紅樓夢的人物關系圖,所以課后根據(jù)視頻和博客的學習,初嘗試

    2024年04月14日
    瀏覽(20)
  • 圖數(shù)據(jù)庫_Neo4j和SpringBoot整合使用_實戰(zhàn)創(chuàng)建明星關系圖譜---Neo4j圖數(shù)據(jù)庫工作筆記0010

    2023-09-10 10:37:48 補充 注意:下面是舊版本的語法,如果你發(fā)現(xiàn)@NodeEntity這樣的注解沒有的話可以這樣: 這里就要用@Node 另外如果@StartNode和@EndNode都沒有了,那么說明是用法變了. 關于最新的用法,在官網(wǎng)有明確的說明和案例,很有用: 下面給出官網(wǎng)的案例:

    2024年02月12日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包