我正在使用图表建模“标签云”:
(t:Tag {name:'cypher'})-[:IN]->(g:TagGroup)<-[:TAGGED]-(x)
IE:命名标记是“TagGroup”的一部分,零个或多个节点为“TAGGED”。我选择了这个设计,因为我希望能够组合两个或多个命名标签(例如“cypher”和“neo4j”),以便(Tag)
个[IN]
为新(TagGroup)
和(TagGroup)
new [TAGGED]
是以前match (t:Tag {name:'cypher'})-[i:IN]->(g:TagGroup),
(t2:Tag {name:'neo4j'})-[:IN]->(g2:TagGroup)<-[y:TAGGED]-(x)
create (t2)-[:IN]->(g)
create unique (g)<-[:TAGGED]-(x)
with g2 as g2
match (g2)<-[r]->() delete g2,r
的所有节点的并集的端点。
我唯一(不太讨人喜欢)的尝试是:
{{1}}
我的主要问题是它只结合了两个节点,并且效率不高(尽管我没有其他选择来比较它)。理想情况下,我可以按名称组合任意一组(标签)。
如果可以通过Cypher完成任何想法,如果是这样,怎么做?
答案 0 :(得分:0)
您可以使用标签而不是创建单独的标签组。
例如。如果标签neo4j和cypher在标签组下面说XYZ那么
MERGE (a:Tag {name: "neo4j"})-[:TAGGED]->(x)
MERGE (b:Tag {name: "cypher"})-[:TAGGED]->(x)
set a :XYZ , b :XYZ
所以下次你想要特定组的标签TAGGED到特定的帖子x
MATCH (a:Tag:XYZ)-[:TAGGED]->(x) return a.name