我试图使用neo4j中的gds.nodesimilarity
构建一个Jaccard相似性,但它在嵌套循环中给了我一个错误。这是我编写的代码,如下所示:
with m.title as watched, m1.title as recommended, collect(distinct k.keywordId) as kou, size(collect(distinct k.name)) as skou where skou>=2 return watched, recommended, kou, skou
foreach(i in kou | foreach(j in kou | (gds.similarity.jaccard(j,i)))) AS jaccardSimilarity
order by skou DESC
2条答案
按热度按时间liwlm1x91#
除了foreach在另一个foreach中的语法错误外,jaccard相似性参数是分类度量的列表,而不是变量kou中的数值。
但是你在1和1之间,1和3之间,1和6之间,等等。
下面是一个使用Neo4j中的Movie Recommendation数据集的示例工作查询。它将根据类型计算电影"Toy Story"(我最喜欢的)与其他电影的jaccard相似度。
结果:
6qqygrtg2#
我认为你不能在foreach中使用gds.similarity函数。Foreach是用来更新该集合中的数据的。请检查下面的链接https://neo4j.com/docs/cypher-manual/current/clauses/foreach/