You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于图数据库中不同边的属性实现推荐系统计算?

计算用户对产品的偏好度

核心思路

通过关联用户-分类、产品-分类的RATING边,获取对应分类下的双方评分,代入公式完成计算:
(Σ(用户分类评分 × 产品分类评分)) / (分类数量 × 最大评分)

具体Cypher查询

针对指定用户和产品的查询

MATCH (user:Person {name: 'Abigail'})-[ur:RATING]->(cat:Category),
      (product:Product {title: 'Product_Name'})-[pr:RATING]->(cat)
WITH user, product, 
     SUM(ur.rating * pr.rating) AS total_product,
     COUNT(DISTINCT cat) AS num_categories,
     4 AS max_rating -- 按你的评分体系固定最大分值,也可改为MAX(ur.rating)动态获取
RETURN user.name AS username,
       product.title AS product_title,
       total_product / (num_categories * max_rating) AS preference_score

通用批量查询

如果需要计算所有用户对所有产品的偏好度,去掉节点属性过滤条件即可:

MATCH (user:Person)-[ur:RATING]->(cat:Category),
      (product:Product)-[pr:RATING]->(cat)
WITH user, product, 
     SUM(ur.rating * pr.rating) AS total_product,
     COUNT(DISTINCT cat) AS num_categories,
     4 AS max_rating
RETURN user.name AS username,
       product.title AS product_title,
       total_product / (num_categories * max_rating) AS preference_score

查询说明

  1. 关联评分关系:通过共同的Category节点,精准匹配同一分类下用户与产品的评分边,确保数据对应性。
  2. 聚合关键数值:
    • SUM(ur.rating * pr.rating):计算所有分类下用户评分与产品评分的乘积总和
    • COUNT(DISTINCT cat):统计参与计算的有效分类数量
    • max_rating:根据你的评分规则设置,例子中固定为4,若评分体系可变可改用MAX(ur.rating)动态获取
  3. 计算最终偏好度:代入公式得到结果,数值越接近1(或对应最大评分比例),表示用户对该产品的购买意愿越强。

结果验证

针对你给出的实例,查询会返回:

username | product_title | preference_score
Abigail  | Product_Name  | 0.3333333333333333

与手动计算的结果完全一致。

内容的提问来源于stack exchange,提问作者Matheus Farias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 12:37:17