我有一张成员图表以及他们查看过的项目。
该数据将用于根据类似会员查看过的项目来推荐项目。我想根据项目颜色的相似程度对项目进行排序。颜色存储在数组中的项目上([“红色”,“蓝色”,“绿色”])。 cypher 中是否有任何方法可以比较数组以查看它们有多少共同元素?
给定两个节点 n 和 m,看起来像:
CREATE ({id: 1, color: ["red", "blue", "green", "yellow"]})
CREATE ({id: 2, color: ["red", "blue", "green", "white"]})
你可以这样做:
MATCH n, m
WHERE n.id = 1 AND m.id = 2
RETURN length(FILTER(x in n.color WHERE x in m.color))
The FILTER
函数迭代 n.color 数组,将当前值绑定到x
(我随意选择,可能会有所不同)。谓词 (x in m.color
) 对每个进行检查x
value,如果计算结果为 true,则该元素将被推入新数组中FILTER
返回。您可以将其保留在该位置以查看两个数组(在本例中为红色、蓝色和绿色)的交集,或者将其包装在length
函数查看两个节点之间共享的颜色数量(本例中为 3)。
在此处查看完整的 FILTER 文档:http://docs.neo4j.org/chunked/milestone/query-functions-collection.html#functions-filter http://docs.neo4j.org/chunked/milestone/query-functions-collection.html#functions-filter
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)