You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于共享子节点查找最相似节点并列出共享节点

解决Cypher查询相似节点并获取共享子节点列表的问题

我完全懂你的困扰——找到和目标节点相似度最高的节点后,却拿不到具体共享了哪些子节点,确实有点挠头。其实只需要在你的原有查询基础上,加上收集共享节点的逻辑就能搞定。

这里给你调整后的Cypher语句,既能返回最相似的节点,还能同时拿到共享子节点的列表:

MATCH (n1:Node {name: "some name"})-[:HAS]->(shared)<-[:HAS]-(n2:Node)
WHERE n1 <> n2  // 避免匹配到节点自身
WITH n2.name as similarNode, count(shared) as sharedCount, collect(shared.name) as sharedNodes
ORDER BY sharedCount DESC
LIMIT 1
RETURN similarNode, sharedCount, sharedNodes

语句细节说明:

  • collect(shared.name):这个函数会把所有匹配到的共享子节点的名称收集成一个列表,正好满足你要获取子节点列表的需求
  • WHERE n1 <> n2:加上这个条件可以防止查询结果里出现目标节点自己(如果存在节点自关联HAS关系的话)
  • 排序和限制逻辑和你原来的保持一致,确保返回的是相似度最高的节点

拿你提供的示例数据来说,当把"some name"换成"N1"时,执行这个语句会得到:

similarNodesharedCountsharedNodes
N33["A", "B", "C"]

完美匹配你预期的结果。如果需要查看所有节点的相似度及共享子节点,只需要去掉最后的LIMIT 1即可。

内容的提问来源于stack exchange,提问作者SteelShot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 10:03:59