如何在Neo4j查询中统计匹配标签数量并返回节点权重?
Neo4j 查询:返回带匹配标签权重的节点列表
要实现返回包含指定标签的节点,并统计每个节点匹配的标签数量作为权重,你可以通过列表推导式结合size()函数来计算权重,修改后的Cypher查询如下:
MATCH (n) WHERE any(x IN ["im-a-tag", "test2"] WHERE x IN n.tags) WITH n, size([x IN ["im-a-tag", "test2"] WHERE x IN n.tags]) AS weight RETURN n, weight ORDER BY weight DESC
说明:
[x IN ["im-a-tag", "test2"] WHERE x IN n.tags]:通过列表推导式,生成目标标签列表中存在于节点n.tags里的元素集合size(...):计算上述集合的长度,也就是节点匹配的标签数量,作为权重weightORDER BY weight DESC:按权重从高到低排序结果,可根据需求调整排序方向
针对你给出的示例节点:
- 节点
a{tags:["im-a-tag", "not-important"]}会匹配1个目标标签,返回a{..., weight: 1} - 节点
b{tags:["im-a-tag", "test2"]}会匹配2个目标标签,返回b{..., weight: 2}
内容的提问来源于stack exchange,提问作者LavaTheif
相关产品推荐
相关产品推荐

