Neo4j-基于标签获取电影推荐
我想查找其搜索标签包含我观看的电影标签的电影。以下是我的查询,但它没有产生预期的结果,有人能告诉我这个查询有什么问题吗Neo4j-基于标签获取电影推荐,neo4j,cypher,neo4j-cql,Neo4j,Cypher,Neo4j Cql,我想查找其搜索标签包含我观看的电影标签的电影。以下是我的查询,但它没有产生预期的结果,有人能告诉我这个查询有什么问题吗 MATCH (m:Movie)-[:HAS_TAG]->(t:Tag) WHERE NOT (:Person {personId : '50'})-[:WATCHED]->(m) AND (m)-[:HAS_TAG]->(t) RETURN DISTINCT(m.movieId) as movieId, COLLECT(t.ta
MATCH (m:Movie)-[:HAS_TAG]->(t:Tag)
WHERE NOT (:Person {personId : '50'})-[:WATCHED]->(m)
AND (m)-[:HAS_TAG]->(t)
RETURN DISTINCT(m.movieId) as movieId,
COLLECT(t.tagId) as Tag
我尝试了这个查询,它正在工作,但我不知道如何使它成为动态tagid?我是neo4j的新手,我阅读了neo4j中带有语句的,但不确定如何使用它以及它是否有效
MATCH (m:Movie)-[:HAS_TAG]->(t:Tag)
WHERE NOT (:Person {personId : '50'})-[:WATCHED]->(m)
AND t.tagId in ['16','19','21','22','23','24','25']
RETURN DISTINCT(m.movieId)
或带有图案的变体:
MATCH (p:Person {personId : '50'})
WITH p
MATCH (p)-[:WATCHED]->(wm:Movie)-[:HAS_TAG]->(t:Tag)<-[:HAS_TAG]-(rm:Movie)
WHERE NOT (p)-[:WATCHED]->(rm)
RETURN distinct rm AS movies
MATCH(p:Person{personId:'50'})
与p
比赛(p)-[:观看的]->(wm:Movie)-[:有标签]->(t:TAG)(rm)
作为电影返回不同的rm
我想你的意思是“我不看”(不管怎样,你在查询中似乎就是这么做的)。“动态标记id”是什么意思:是否要参数化查询中使用的标记id?电影应该至少有一个标签还是全部标签?谢谢@FrankPavageau,我所说的动态是指在查询中是静态的标签数组['16'、'19'、'21'、'22'、'23'、'24'、'25']
MATCH (p:Person {personId : '50'})
WITH p
MATCH (p)-[:WATCHED]->(wm:Movie)-[:HAS_TAG]->(t:Tag)<-[:HAS_TAG]-(rm:Movie)
WHERE NOT (p)-[:WATCHED]->(rm)
RETURN distinct rm AS movies