我正在尝试解决一个简单的问题:根据为产品评级计算的欧几里德距离计算用户与用户的相似度。
我正在使用这样的查询
SELECT U1.UserId, U2.UserId
FROM (
MATCH
{class:User, as: U1, where: (UserId=12345) } -rate-> {class:Product, as:P},
{class:User, as: U2, where: (UserId<>12345)} -rate-> {as:OP},
RETURN U1, U2, P, OP
)
我现在将为每一对(用户 U1,用户 U2)计算一个结果,该结果表示普通产品的评分之间的距离。
用户常用产品示例
U1,Product,Rating
1, xxx, 5
2, xxx, 2
1, yyy, 10
2, yyy, 8
所以我会计算 Sqrt((5-2)^2 + (10-8)^2) 作为距离
这是否可以通过 OrientDB 上的单个查询来实现。Neo4J 提供 WITH 语句来操作 Cypher Query 中的连续实例。
非常感谢您为我们提供的所有帮助。
谢谢罗伯托