我正在研究以下Neo4j架构:
我试图获取不同标签的频率。我尝试了以下Cypher请求:
MATCH ()-[r:entry_tag]->(:tag_value)-[:value_of_tag]->(t:tag)
RETURN t.tag AS tag, COUNT(r) AS tagFrequency ORDER BY tagFrequency DESC
但我的问题是某些条目具有相同的tag_values,但不属于同一个标记。因此,每次都会计算() - [:entry_tag] - >(),而我正在寻找从条目到其标记的所有唯一路径。
例如,如果我有以下3个条目:
我得到的结果是:(第一个是标签,第二个是频率)
tag1:2
tag3:2
tag2:1
因为标签1和3共享相同的标签值,然后关系[:entry_value]被计算两次,而我想为每个频率获得1,因为我试图获得路径从开始到结束。
我知道我的密码查询错误,但我无法弄清楚如何纠正它。有没有人有建议?
提前致谢
编辑:为了更好地理解,这里是我的例子的一些图形图像:
首先是以下查询的结果:
MATCH path= ()-[:entry_tag]->(v:tag_value)-[:value_of_tag]->(t:tag)
WHERE t.tag in ['tag1', 'tag2', 'tag3'] AND v.tag_value in ['A', 'B']
RETURN path LIMIT 3
然后我的3个条目及其标签和标签值: