Я пытаюсь решить простую задачу: вычислить подобие пользователя к пользователю на основе эвклидовой дистанции, рассчитанной для оценок продукта.OrientDB - Compute User Similarity
Я использую такой запрос
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.
Большое спасибо за помощь, которую вы можете нам предоставить.
Thx Роберто
Hi Luigi, thankyou very much; возможно ли в конце запроса присвоить новый край taht будет представлять вычисленное сходство? –