簡體   English   中英

密碼查詢以測試關系的共通性

[英]cypher query to test relationship commonality

我有一個帶有用戶和組的neo4j數據集。

MATCH (user:User)-[r:Memberof]->(group:Group) RETURN *

現在,我想對每個組與所有其他組的共通性進行rate ,以確定所有組之間的相似度百分比(A組與B組共享95%的成員資格,C組與82%的成員擁有82%的成員資格,等等)

不清楚從哪里開始,請提供任何幫助! :)

Neo4j圖算法庫中有一些用於檢查相似性的圖算法

Jaccard相似性算法看起來很適合此用例。 Jaccard相似度算法可用於找出兩件事之間的相似度。

這里還有一種可用的相似度算法 ,即重疊相似度算法 重疊相似度算法可用於找出哪些事物是其他事物的子集。

您可以在Neo4j文檔頁面上找到有關所有可用相似性算法的更多詳細信息和一些好的示例。 您可以參考上一頁的示例,並根據需要編寫Cypher查詢。

match (user:User)-[:Memberof]->(group:GroupA)
WITH COUNT(user) AS NUM_A, user
Match (user)-[:Memberof]->(group:GroupB)
RETURN COUNT(user) AS NUM_B, NUM_A

您可以通過這種方式匹配單個組

謝謝拉吉

通過以下查詢進行管理。...

MATCH (user:User)-[:MemberOf]->(group:Group)
WITH {item:id(group), categories: collect(id(user))} as userData
WITH collect(userData) as data
CALL algo.similarity.jaccard.stream(data, {similarityCutoff: 0.9})
YIELD item1, item2, count1, count2, intersection, similarity
RETURN algo.asNode(item1).name AS from, algo.asNode(item2).name AS to, intersection, (similarity * 100) AS match

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM