1
我有一个neo4j数据库,包含用户,曲目和DJ,用户与DJ有相似之处,DJ可以播放曲目。现在我想找出所有由具有与用户相似的DJ,东西打得像在neo4j中找到明确的关系
MATCH (u:User {userId:'6'})-[s:SIMILARITY]->(dj:Dj)-[p:PLAYED]->(t:Track)
return COUNT(t)*s.similarity AS count,t order by count;
问题的轨道是DJ的可以多次,我已经由多个PLAYED代表播放音轨DJ和曲目之间的关系。所以如果一个dj多次播放曲目,它会通过这个查询获得更多的权重,而我只想让这些多个关系计数一次。
的解决方案可能是一些与DISTINCT,但我不知道在哪里把它(计数(不同T)没有得到期望的结果)。另一种方法是将数据库重构为只有一个PLAYED关系,并将PLAYED的timestamp属性存储为一个数组。
在这种情况下,我想执行一个查询(其他地方)问:“找到所有跟踪该时间戳在此之后跟着DJ播放”,这也将解决这个问题,但我不知道怎么办。
在此先感谢
这么简单,谢谢! – user3136936 2015-03-13 09:14:44