需要帮助弄清楚2个演员在最多电影中所扮演的角色的数量(密码)

时间:2019-12-01 22:18:54

标签: neo4j cypher

我在下面编写了命令,列出了在不同电影中一起表演过的演员对,并列出了一起表演的次数。

match (person1)-[:ACTED_IN]->(Movie)<-[:ACTED_IN]-(person2)
return DISTINCT Movie.title, person1.name, person2.name, count(Movie) AS pairs
ORDER BY pairs DESC

我认为这是不准确的,因为它计算重复实例,即-xy被算作一个实例,而yx被算作一个实例。单独的实例。有谁知道如何解决这一问题?

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

是的,您可以为此添加一些逻辑,例如:

        var salt = CryptoJS.enc.Utf8.parse(this.tokenFromUI);

        var hasher = CryptoJS.algo.SHA1;
        var key32Byte = CryptoJS.PBKDF2(this.tokenFromUI, salt, {
            keySize: 256 / 32,
            iterations: 1000,
            hasher: hasher
        });       
        console.log("key32Byte", this.wordToByteArray(key32Byte.words));

答案 1 :(得分:0)

要正确地观看每对演员出现的电影(以共享电影的降序排列),这应该起作用:

MATCH (p1:Person)-[:ACTED_IN]->(m)<-[:ACTED_IN]-(p2:Person)
RETURN p1.name, p2.name, COLLECT(m) AS movies, COUNT(m) AS pairs
ORDER BY pairs DESC

此查询考虑到aggregating functions(例如COUNTCOLLECT)在同一WITHRETURN中使用非聚合元素的事实子句称为“分组键”。另外,DISTINCT也不需要,因为聚合函数隐式返回不同的行(如果有任何分组键)。