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

如何用Gremlin在AWS Neptune中生成符合分类的用户美食推荐?

Gremlin QL 实现用户食物推荐逻辑

需求回顾

针对用户(如User2)生成食物推荐,需满足:

  • 推荐食物属于用户喜欢的菜系
  • 该菜系与用户喜欢的菜系属于同一分类

节点与边模型说明

基于需求,默认存在以下节点和边关系:

  • User:用户节点,含userId属性(如User2)
  • Cuisine:菜系节点,含name属性
  • Category:分类节点,含name属性
  • Food:食物节点,含name属性(推荐目标)
  • 边关系:
    • User → likes → Cuisine(用户关联喜欢的菜系)
    • Cuisine → belongs_to → Category(菜系关联所属分类)
    • Food → is_in → Cuisine(食物关联所属菜系)

Gremlin 查询语句

g.V()
  // 定位目标用户,可替换为具体userId参数适配多用户场景
  .hasLabel('User').has('userId', 'User2')
  // 遍历用户喜欢的所有菜系
  .out('likes').hasLabel('Cuisine')
  // 获取这些菜系对应的分类
  .out('belongs_to').hasLabel('Category')
  // 反向遍历该分类下的所有菜系,确保同分类
  .in('belongs_to').hasLabel('Cuisine')
  // 过滤出用户喜欢的菜系,确保属于用户偏好范围
  .where(__.in('likes').hasLabel('User').has('userId', 'User2'))
  // 提取这些菜系下的所有食物
  .out('is_in').hasLabel('Food')
  // 去重避免重复推荐
  .dedup()
  // 返回结构化推荐结果
  .project('foodName', 'cuisine', 'category')
    .by('name')
    .by(__.in('is_in').hasLabel('Cuisine').values('name'))
    .by(__.in('is_in').hasLabel('Cuisine').out('belongs_to').values('name'))

查询逻辑拆解

  1. 定位用户:先匹配目标用户节点,支持参数化替换userId适配多用户场景。
  2. 关联偏好菜系:通过likes边获取用户喜欢的所有菜系。
  3. 绑定分类维度:通过belongs_to边拿到偏好菜系对应的分类。
  4. 双条件筛选:反向遍历同分类下的所有菜系,再过滤出用户喜欢的部分,同时满足“同分类”和“用户偏好菜系”两个核心要求。
  5. 输出推荐结果:提取符合条件的食物,去重后返回食物名称、所属菜系及分类信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:03:21