问题标签 [py2neo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
graph - Neo4J:Java 堆空间错误:100 k 节点
我有一个超过 100,000 个节点的 neo4j 图。当我通过 REST 使用以下密码查询时,我得到一个 Java Heap Error 。该查询正在从一组购买中生成一个 2-itemset。
类型 1 (a,c) 和类型 2 (b) 两种类型节点的叉积为 80k*20k
是否有针对相同目的更优化的查询?我仍然是 cypher 的新手。(我在所有 Type1 和 Type2 节点上分别有两个可以使用的索引)或者我应该只是增加 java heap size 。
我正在使用 py2neo 进行 REST 查询。
谢谢。
py2neo - 通过 id 访问的 py2neo 节点返回的对象与通过索引访问的节点不同
我正在使用 py2neo 1.6.4 和 neo4j 2.0.1,并且在访问索引节点时发现了一些奇怪的地方。特别是,通过 index 访问的索引节点不会返回与通过 id 访问的节点相同的对象。
例如:
因此,通过 id 访问时返回的节点实际上并不存在于数据库中,即使返回的 id 正是分配给索引节点的那个。
我对 neo4j 和 py2neo 都相当陌生,并且对索引没有非常复杂的理解,所以如果有一个答案可以帮助教育我和其他人,那就太好了,如果这代表了一个很好的错误也知道:)
谢谢!
java - 增加 JVM 可用的堆空间:OutOfMemoryError:请求的数组大小超过 VM 限制 Ubuntu 64Bit Neo4j 2.0
我的规格:
-Ubuntu 64位
-Neo4j 2.0
-32 GB 内存
-AMD FX-8350 八核处理器
问题:
我正在使用以下查询向我的 Neo4j 服务器发出请求:
并给我这个错误:
这适用于“my_label_1”,它返回大约 30k 个结果
我认为是问题所在:
我没有足够的内存分配给我的 JVM
尝试修复/我在网上找到的东西:
因此,我尝试进入我的 neo4 文件夹(像往常一样使用 cd )并以这种方式使用参数运行它:
然而这并没有奏效。当 Neo4j 启动时,它确实警告我可能没有足够的空间:
问题
我知道我肯定使用错误的论点,老实说,我对 JVM 配置没有太多经验。我应该如何解决这个问题,我错过了什么吗?
neo4j - 检查neo4j图中是否存在节点
笔记
我让这变成了几个问题,而不是我问的简单问题,所以我在这里将后续问题分解为他们自己的问题。
原始问题
我收到了一个 ID 列表,我首先测试它们中的任何一个是否在我的图表中,如果它们 /are/ 我正在进一步处理这些节点。
所以,例如...
正如您可以想象的那样,使用过滤器执行此操作,依次测试每个 ID 是否在我的图表中真的非常慢,并且显然没有正确使用 neo4j。
我将如何改写我的查询,以便我可以创建一个列表(User{id_str: [mylist]})
来查询并仅返回我的图表中的 ID?
foreach - 在 neo4j 中创建唯一关系而不创建唯一节点
我将我在其他地方提出的问题分解为第二部分。
对于具有已知在图中的 id_str 的给定节点,我有一个新的 id_str 列表,它可能在图中也可能不在图中。如果他们/是/在图表中,我想与他们建立独特的关系。(如果不是,我想忽略它们。)
我目前的方法很慢。我正在 Neo 之外执行循环部分,使用 py2neo 并使用非常慢的过滤器一次写入一个条目。
本来我用...
虽然我想要新的 /unique/ [:FRIENDS] 关系,但如果节点不存在具有有效 id_str 的节点,我不想创建新用户或新朋友。
所以,我正在尝试使用 FOREACH 和集合来重写它。我认为实际的语法是......
但我的错误是
FOREACH 构造似乎不支持创建唯一,即使这个答案表明这已得到修复。
再一次,我不能使用11.2.2 中建议的语法,因为我不希望创建其他节点,只希望创建与现有节点的新关系。
neo4j - 在 neo4j 和 py2neo 中使用索引
我刚刚开始使用 py2neo 和 neo4j。
我对如何在我的数据库中使用索引感到困惑。
我创建了一个 create_user 函数:
现在通过用户名获取用户:
我看到了Schema类,注意到我可以在"User"
标签上创建一个索引,但我不知道如何获取索引并向其添加实体。
我希望它尽可能高效,所以在"User"
标签上添加索引会增加性能,以防我稍后添加更多具有不同标签的节点?它已经是最有效的了吗?
另外,如果我希望我的用户名系统对每个用户都是唯一的,我将如何做到这一点?我如何知道batch.get_or_add_to_index
是获取还是添加实体?
py2neo - Py2Neo 标签索引
我有一个包含单词和与这些单词相关的文档的数据集。我想在它们上设置标签以将它们分为这两个类别。我可以通过这样做来创建标签:
问题是我需要在“word”和“url”字段上强制执行唯一性。我正在添加节点和标签,如下所示
我的问题是:
- 有没有办法通过使用 get_or_create 将节点添加到标签索引
- py2neo api 是否有办法在标签索引上强制执行唯一性
- 有没有更好的方法来完成这一切。文档有点模糊
neo4j - Neo4j: Create multiple relationships with cypher and parameters
I try to create a lot of relationships (16k) with one cypher statement and parameters in py2neo by a WriteBatch. If try to create only 10 (or so) relationships, it works without problems. But with 16k relationships, the Neo4j server hung at 100% CPU and py2neo gives an error (after a while).
I use the following code to create the relationships:
object_props looks like this:
python - 找到排除特定边缘的最短路径?
我正在使用 Py2neo,但这可能并不重要,因为这很可能需要通过编写 Cypher 查询来完成。
本质上,我想在subgraph中找到一条最短路径,其中子图是整个图的大部分,但只有一小部分(百万分之一或更少)的边被移除。
例如,假设我有节点 A、B 和 C,以及边 (A->B)、(A->C)、(B->C)。当然,从 A 到 C 的最短路径是直接连接。但是,如果我想找到不使用该边的最短路径,则必须是 AB C。
此外,这将是用户可以在多用户 (Web) 应用程序中指定的内容。所以我不能真正改变数据库本身......如果这不是问题,我可能会在边缘“允许:真/假”上创建一个属性并将其设置为假,但这会扰乱应用程序的行为所有当前用户。
对此的一种变体是具有“不允许:sessionID1、sessionID230、sessionID1010”,即实际存储哪些应用程序会话想要在边缘本身中排除该边缘,但这似乎也不理想。
当然,我实际上可以在 python 中实现 BFS,方法是根据需要从 neo4j 获取节点并将它们保留在队列中,而不是让 neo4j 进行搜索,但这肯定会慢得多,对吧?
有什么想法吗?谢谢
编辑:请求查看代码。
下面是我目前如何获得我首先在索引中查找的两个节点之间的最短路径。现在图像还有一个边缘列表(即唯一关系),在最短路径搜索中必须忽略。
编辑 2:示例控制台:http ://console.neo4j.org/r/3c1rgn
很容易找到任意两个人之间的最短“友谊路径”,但是如果我们想找到不涉及特定友谊 rel(或特定友谊 rel 集)但不先修改数据库的最短友谊路径怎么办? 例如,我们想找到从 bob 到 joe 的最短友谊路径,其中我们暂时假设 bob 和 joe 自己不是朋友,alice 和 janet 也不是。
neo4j - Neo4j 崩溃断管错误
我的 Neo4j 服务器崩溃了(v. 2.0.1)。我使用 py2neo 运行了批量插入,但它突然崩溃了。
查看日志,我唯一发现的是一个反复出现的错误:
那是控制台中的最后一条消息,我在所有日志中都找不到任何其他错误。
编辑:
现在我可以重新创建崩溃。我正在运行以下代码:
它总是在 1000 条记录后崩溃。错误与上述相同。我有 neo4j-gc.log - 没什么特别的,没有声明错误。