当前位置: 首页 > 知识库问答 >
问题:

neo4j(密码)非常慢

党航
2023-03-14

我使用FB用户来连接这些节点。FB用户也是图中的节点,属性为person的名称,类型为person。这些节点和项节点之间的关系称为‘喜欢’。现在,如果一个人喜欢一部电影,我会通过遍历图表向他推荐书籍或音乐。这是我试图遍历图的密码查询:

START root = node(<LIKED_MOVIE_NODE_ID>)
MATCH p = root-[rel1:affinity*..3]-(movies)<-[rel2:likes]-(persons)-[rel3:likes]->(books)
WHERE HAS(movies.type) and movies.type = "movies" and HAS(persons.type) and persons.type = "person" and HAS(books.type) and books.type = "books"
RETURN books

这运行非常慢,有时需要500秒。我有大约13000部电影,2000本书和3000个音乐节点。连接他们的是16000人。总共有大约30万段关系。

我的问题是:

共有1个答案

夹谷山
2023-03-14

密码很慢。实际上,与遍历和核心API相比非常慢(http://java.dzone.com/articles/get-full-neo4j-power-using)

也就是说,您可以通过将Match拆分为不同的WITH子句来限制neo4j进程的节点数量。例如,根据您的用法,您可以将根-[rel1:affinity*.3]-(movies)放在seperate子句中,并过滤掉不同的movies。否则,neo4j将处理所有通向电影的路径组合。

PS:

WHERE HAS(movies.type) and movies.type = "movies" and HAS(persons.type) and persons.type = "person" and HAS(books.type) and books.type = "books"
WHERE movies.type! = "movies" and persons.type! = "person" and books.type! = "books"
 类似资料:
  • 我在windows Server2008上运行的是Neo4j版本1.7.2。

  • 我想运行所有这些查询到neo4j,我可以成功地运行一个密码查询会话,但对于多个查询,它显示错误。我还需要个别查询的JSON格式的结果。有什么帮助吗? //此查询的示例结果

  • 我有一个域类,它具有名称为“alias”的属性,它是一个字符串的arraylist,如下所示: alias包含以下值:{“John Doe”、“Alex Smith”、“Greg Walsh”} 我希望能够使用如下所示的存储库查询进行类似“I saw Smith Today”的查询,并获得数组值输出“Alex Smith”: 我想做一个输入查询子字符串匹配的数组值。 例如:输入查询:“我今天看到史

  • 我是新的Neo4j密码查询。因此,基本上我已经编写了一个查询来获取sourceType到目标类型的关系计数,以满足我的一个需求。查询如下所示。 其中第一个%s是sourceType,第二个是我查找引用的目的地。但是我在下面的StackTrace中遇到了一些奇怪的语法问题。 有人能帮我找到上面查询中的语法问题吗。

  • 另外,如果是匹配查询,则参数如下所示: 注电子邮件周围没有引号,所以如果您有一个匹配和设置参数查询,您的参数定义如下所示: 有人能解释这种明显的不一致吗? 这将返回未定义的姓氏。

  • 键->字符串 principal_name->string 别名->字符串集合 ....... 我还在principal_name、别名和key上添加了索引。 当我试图导入Article类型节点和Author类型节点之间的关系时,问题就出现了。 有办法用Cypher做到这一点吗?