neo4j - 如何使用 neo4j 和 cypher 或 gremlin 创建简单的协作过滤器

标签 neo4j cypher gremlin

所以我想基于一个简单的协作过滤器向用户推荐帖子。过滤器应按如下方式工作

  1. 在我喜欢的帖子(我的导师组)中查找与我最相似的前 n 位用户
  2. 查找该导师小组中我尚未点赞的最受欢迎的帖子

所以我有了第一部分,这将给我我的导师

START me=node:node_auto_index(uname = "mike")
MATCH me-[:LIKES]->posts<-[:LIKES]-mentors
RETURN person.uname, count(posts)
ORDER BY count(posts) DESC LIMIT 20;

对于第二部分,在这些导师中找到我尚未喜欢的最受欢迎的帖子。

我将如何在 cypher 或 gremlin 中运行第二部分(如果它更有效)。这是一个由两部分组成的查询,我必须将一个查询结果提供给另一个查询结果,还是可以将其全部合并到一个查询中?

最佳答案

我认为这可能会满足您的要求:

p = [] as Set
g.V('uname','mike').out('likes').aggregate(p).in('likes').groupCount.cap.transform{it.sort{-it.value}[0..19].keySet()}.scatter.out('likes').except(p).groupCount.cap.sort{-it.value}[0..4]

哪里

g.V('uname','mike').out('likes').aggregate(p).in('likes').groupCount

在 HashMap 中为您提供导师组,其值是其权重。接下来,我们取出其中的前 20 个帖子(必须通过转换对它们进行排序),然后找到这些人喜欢的所有帖子(您喜欢的帖子除外)。

关于neo4j - 如何使用 neo4j 和 cypher 或 gremlin 创建简单的协作过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13499809/

相关文章:

json - 密码查询JSON格式的结果

database - 多语言持久化关系图数据库是个好主意吗?

Meteor 1.0 - 自定义身份验证规则

java - 为 gremlin 服务器配置 neo4j

c# - Azure CosmosDB (Gremlin API),如何使用 Gremlin.Net 进行连接

java - 批量导入NEO4J配置错误

neo4j - 密码中每一行的拆分操作

neo4j - py2neo 密码错误 : KeyError: "u' cypher'

json - UNWIND 从 JSON 文件加载的多个不相关的数组

node.js - 升级到 AnonymousTraversalSource (Gremlin 3.3.5+ Node.js)