标签: neo4j

library(RNeo4j)库中的错误(RNeo4j):没有名为'RNeo4j'的包

将库(RNeo4j)粘贴到控制台时,我收到上述错误.用尽了想法.请帮忙,这可能是非常微不足道的

r neo4j r-neo4j

1
推荐指数
1
解决办法
348
查看次数

将neo4j查询结果加载到python的`igraph`图中

如何将Cypher查询的结果加载到igraphpython中,保留所有边缘和顶点属性?

python igraph neo4j cypher

1
推荐指数
1
解决办法
1314
查看次数

如何获得起始节点和结束节点之间的关系?

我正在努力寻找家庭关系.

例如,我想知道我和父亲的妻子之间的关系是什么?它应该归还母亲.

我和我母亲的女儿之间有什么关系?它应该归还姐姐.

这就是我的图表.有8个关系和2个标签(男性或女性).

我的图表

如何在不指定任何节点的情况下实现此目的?例如,如果我想知道我和我父亲的女儿之间的关系.

我想做一些类似于MATCH () -[:Father]->()-[:Daughter]->()开始和结束节点之间的关系.

我确定这个查询绝对错误,但我希望你知道我在这里想要实现的目标.

graph neo4j

1
推荐指数
1
解决办法
163
查看次数

Neo4j匹配与集合中所有节点相关的节点

我有一个标签图,它们彼此相关.我的目标是创建一个Cypher查询,它将通过1或2跳返回与输入标签数组相关的所有标签.

我提出了一个查询,这个查询并不像预期的那样有效.

MATCH (t:Tag)
WHERE t.name IN ["A", "B", "C"]
WITH t
MATCH (a:Tag)-[:RELATED*1..2]-(t)
RETURN DISTINCT a;
Run Code Online (Sandbox Code Playgroud)

此查询首先找到的节点A,B,C然后搜索代码,该相关的A,B C通过1个节点或更小.

我想要做的是找到与所有三个节点(A,B C)相关的标签.


我知道我可以连接MATCHWITH声明,并做这样的事情:

MATCH (t:Tag)-[:RELATED*1..2]-(a:Tag)
WHERE t.name="A"

WITH DISTINCT a
MATCH (t:Tag)-[:RELATED*1..2]-(a)
WHERE t.name="B"

WITH DISTINCT a
MATCH (t:Tag)-[:RELATED*1..2]-(a)
WHERE t.name="C"
...
RETURN DISTINCT a;
Run Code Online (Sandbox Code Playgroud)

但它运行非常缓慢,当输入的数量增加标签(在这种情况下,只有3输入标签:A,B,C).


那么有没有办法在一个查询中创建它,类似于我的第一次尝试?

neo4j cypher

1
推荐指数
1
解决办法
2396
查看次数

在Neo4j数据库中可以有效存储多少个节点?

在Neo4j数据库中可以有效存储多少个节点?有没有限制?

neo4j

1
推荐指数
2
解决办法
624
查看次数

如何删除neo4j中的所有节点和所有关系

我知道有很多类似的问题被问到了.但似乎答案无法解决我的问题.我有一个非常大的图表,大约1百万个节点和300万个关系.当我尝试使用以下语句删除它们时:

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r
Run Code Online (Sandbox Code Playgroud)

然后服务器崩溃了.好的,我添加了LIMIT:

MATCH (n)
OPTIONAL MATCH (n)-[r]-()
WITH n,r LIMIT 1000000
DELETE n,r
Run Code Online (Sandbox Code Playgroud)

服务器不会崩溃,但会出现异常:

org.neo4j.kernel.api.exceptions.TransactionFailureException: Node record Node[1578965,used=false,rel=662269,prop=-1,labels=Inline(0x0:[]),light] still has relationships
Run Code Online (Sandbox Code Playgroud)

我猜LIMIT 1000000会停止我对关系的删除.然后它转向删除节点.这导致了这个例外.我对吗?因为我不太了解LIMIT 1000000的过程.

所以我该怎么做?每次我需要清除图表时,我不想删除数据库文件.设置更大的内存空间可能会有所帮助,但我的图表的大小也可能会变大.崩溃最终会发生.


谢谢你的回复.我试过你的方法."Neo.DatabaseError.Statement.ExecutionFailure"异常将在我第二次运行语句时出现:

MATCH (n)
WITH n LIMIT 1000000
DETACH DELETE n
Run Code Online (Sandbox Code Playgroud)

或本声明:

MATCH ()-[r]-()
WITH r
LIMIT 1000000
DELETE r
Run Code Online (Sandbox Code Playgroud)

我放弃.我想我最好删除我文件夹中的所有文件.这对我来说很简单.

neo4j

1
推荐指数
1
解决办法
921
查看次数

Neo4J Readify客户端/驱动程序:无法反序列化对象

我通过运行以下方法尝试获取结果集时收到错误/异常:

public IEnumerable<NeoProduct> GetAllProductsUnderCategory(int categoryId)
                 {
             var query = neo.Cypher.Match("(c:Category{CategoryId:{id}})<-[*](p:Product)")
    .WithParam("id", categoryId)
    .Return(p => p.As<NeoProduct>()).Results;
            }
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它是一个返回NeoProducts列表的非常简单的方法.NeoProduct是一个简单的POCO,具有以下属性:

public int CategoryId { get; set; }
    public string CategoryName { get; set; }
    public int ParentCategoryId { get; set; }
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪是:

   [OverflowException: Value was either too large or too small for an Int64.]
       System.Number.ParseInt64(String value, NumberStyles options, NumberFormatInfo numfmt) +14278344
       System.String.System.IConvertible.ToInt64(IFormatProvider provider) +55
       System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) +14285879
       Neo4jClient.Serialization.CommonDeserializerMethods.CoerceValue(DeserializationContext context, PropertyInfo propertyInfo, JToken value, IEnumerable`1 typeMappings, Int32 nestingLevel) in D:\temp\tmpC806\Neo4jClient\Serialization\CommonDeserializerMethods.cs:101 …
Run Code Online (Sandbox Code Playgroud)

neo4j neo4jclient

1
推荐指数
1
解决办法
280
查看次数

在Neo4j中存储UUID的最佳方式?

如果我尝试简单

thingNode.setProperty("uuid", thing.getId());

我明白了

java.util.UUID] is not a supported property value

然而,将128位UUID存储为36个字符的字符串将非常浪费.如果我将UUID拆分为单独的属性

thingNode.setProperty("uuid-begin", thing.getId().getMostSignificantBits());
thingNode.setProperty("uuid-end", thing.getId().getLeastSignificantBits());
Run Code Online (Sandbox Code Playgroud)

看来我只能在单个属性上创建索引,并且必须以某种方式将UUID的两个位连接成一个属性.如上所述,由于存储空间非常低效,因此不希望使用字符串.有任何想法吗?

indexing uuid neo4j graph-databases

1
推荐指数
1
解决办法
559
查看次数

在Ruby中将数据从大型CSV(或数据流)有效地导入Neo4j

我是后台流程的新手,所以如果我做错了假设,请随时指出。

我正在尝试编写一个脚本,用于将导入数据从大型CSV文件导入Neo4j db(将其视为数据流,无休止地)。csv文件仅包含两列-user_a_id和user_b_id,它们映射有向关系。需要考虑的几件事:

  1. 数据可能重复
  2. 同一用户可以映射到其他多个用户,并且不能保证该用户何时会再次显示。

我当前的解决方案:我正在使用sidekiq,并且有一个工作人员批量读取文件,并分派工作人员在数据库中创建边。

我遇到的问题:

  1. 由于我正在接收数据流,因此无法对文件进行预排序并为一个用户分配建立关系的作业。
  2. 由于作业是异步执行的,因此如果两个工作人员正在处理同一节点的关系,我将获得Neo4j的写锁。
  3. 假设我绕过写锁,如果两个工作人员正在处理重复的记录,那么我将构建重复的边。

可能的解决方案:建立一个同步队列,并且只有一个工作线程来执行写操作(似乎sidekiq或resque都没有该选项)。这可能非常慢,因为只有一个线程在工作。

或者,我可以编写自己的实现,该实现创建一个工作程序以根据user_id(每个队列一个唯一的ID)构建多个作业队列,并使用Redis进行存储。然后,为每个队列分配一个工作线程以写入数据库。设置最大队列数,这样我就不会用完内存,并在队列耗尽所有作业后将其删除(如果以后会看到相同的user_id,请重新构建它)。-虽然听起来并不简单,所以我更喜欢在使用之前使用现有的库。

我的问题是-是否可以使用现有的宝石?处理此问题的良好做法是什么?

ruby multithreading backgroundworker neo4j

1
推荐指数
1
解决办法
470
查看次数

neo4j查询错误"不知道如何比较"

我使用隐士推理器和Java加载了Neo4j和Pizza.owl文件.当我通过一个简单的查询:

match (n) where n="name:Pizza" return n;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

 Don't know how to compare that. Left: Node[1]{name:"owl:Thing"} (NodeProxy); Right: "name:Pizza" (String)
Run Code Online (Sandbox Code Playgroud)

NodeProxy是数据类型吗?我怎样才能让他们两个进行比较.我可以在查询时进行投射吗?是否有任何查询来更改整个图节点的数据类型?如何检查节点的类型?

owl neo4j cypher

1
推荐指数
1
解决办法
442
查看次数