我是Cypher新手所以我可能会遗漏一些明显的东西,但在阅读了我能找到的所有基本推荐引擎帖子/教程之后,我似乎无法解决这个问题所以所有的帮助都表示赞赏。
我尝试制作一个推荐功能,根据她喜欢的以前地方的标签向用户推荐地方信息。用户与Tag具有LIKES关系,其中包含重量属性。地方与标签有CONTAINS关系,但包含没有与之关联的任何权重。此外,LIKES加权超过特定阈值(0.85)的标签越多,它应该被排序的越高,因此这将添加SUM聚合器。
(User)-[:LIKES]->(Tag)<-[:CONTAINS]-(Place)
我的问题是,我无法根据指向它的与用户有LIKES关系的标签数量订购商店,以及如何使用LIKES权重订购商品。
答案 0 :(得分:3)
基于以下示例neo4j控制台:http://console.neo4j.org/r/klmu5l
以下查询应该可以解决问题:
MATCH (n:User {login:'freeman.williamson'})-[r:LIKES]->(tag)
MATCH (place:Place)-[:CONTAINS]->(tag)
WITH place, sum(r.weight) as weight, collect(tag.name) as tags
RETURN place, size(tags) as rate, weight
ORDER BY rate DESC, weight DESC
返回:
(42:Place {name:"Alveraville"}) 6 491767416
(38:Place {name:"Raynorshire"}) 5 491766715
(45:Place {name:"North Kristoffer"}) 5 491766069
(36:Place {name:"Orrinmouth"}) 5 491736638
(44:Place {name:"New Corachester"}) 5 491736001
说明: