返回neo4j中最常见的路径

用户201411

我有一个非常简单的结构:

U1-:VISITS->P1-:VISITS->P2-:VISITS->P3-VISITS->P4...

每个VISITS关系的等级从1到10。我对以U1-:VISITS-> P1-:VISITS-> P2开头的关系感兴趣,其中第一等级为<2,第二等级大于5。每页节点具有页面链接作为属性。之后,我对用户访问的接下来的2页感兴趣。这应该返回路径列表。我对用户采用的最频繁的路径感兴趣,并对它们出现的次数进行排序。我的查询未返回正确的路径计数。我做错什么了?

MATCH p=(a)-[r:VISITS]-(b)-[t:VISITS]-(c)-[q*1..2]-(page:Page) WHERE r.rating<2 AND t.rating>5 RETURN EXTRACT (n IN nodes(p)|n.page_id) ,count(p) ORDER BY count(p) DESC;

例如:

U1->P1->P2
U2->P1->P2
U3->P3->P4

应该有

P1,P2  2
P3,P4  1

作为最终结果。

编辑:这是我的解决方案,返回上述问题的正确结果(u-> p1-> p2):

MATCH p=(a)-[r:VISITS]-(b:Page)-[t:VISITS]-(page:Page) WHERE r.rating<2 AND t.rating>5 WITH EXTRACT (n IN nodes(p)|n.page_id) AS my_pages,t AS rels RETURN DISTINCT(my_pages) AS pages,count(DISTINCT rels) as count;

我现在需要扩展它以包括更长的路径。

布莱恩·安德伍德

我注意到的第一件事(它只是一个转录错误),关系上没有方向。而且,您没有使用标签,因此可以在路径的任何子部分进行匹配。这可能会更好:

MATCH p=(a:User)-[r:VISITS]->(b:Page)-[t:VISITS]->(c:Page)-[q*1..2]->(page:Page)
  WHERE r.rating<2 AND t.rating>5
  RETURN EXTRACT (n IN nodes(p)|n.page_id) ,count(p)
  ORDER BY count(p) DESC;

如果没有标签,也可以添加 WHERE NOT(()-[:VISITS]->(a))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Neo4J查询最常见的关系

来自分类Dev

返回字符串中最常见的字符

来自分类Dev

PHP:数组中最常见的值

来自分类Dev

获取mysql中最常见的值

来自分类Dev

Java中最常见的价值

来自分类Dev

txt文件中最常见的单词

来自分类Dev

平面清单中最常见的价值

来自分类Dev

子列表中最常见的值

来自分类Dev

词典数组中最常见的字典

来自分类Dev

tableView中最常见的数组元素

来自分类Dev

Python 列表中最常见的值

来自分类Dev

返回neo4j路径上的关系属性总和?

来自分类Dev

Neo4j - shortestPath 不返回路径长度

来自分类Dev

有什么方法可以过滤掉 Neo4J APOC 请求中最常用的术语?

来自分类Dev

返回列表列表中最常见项目列表的方法是什么?

来自分类Dev

JavaScript | 返回字符串中最常见的多个字符

来自分类Dev

在R中找到最常见的路径

来自分类Dev

在bash中找到文件中最常见的行

来自分类Dev

创建JavaScript数组中最常见值的索引数组

来自分类Dev

使用OpenCV获取图像中最常见的颜色

来自分类Dev

字符串中最常见的单词

来自分类Dev

查找字符串中最常见的单词

来自分类Dev

字符串中最常见的字符

来自分类Dev

Java-获取列表中最常见的元素

来自分类Dev

如何找到列表中最常见的数字组合?

来自分类Dev

用group by查找数组中最常见的元素

来自分类Dev

范围中最常见的单词,忽略空格

来自分类Dev

查找集合中最常见的数字组合

来自分类Dev

确定int数组中最常见的元素