标签: neo4j

在neo4j中插入数据的更快捷方式?

我试图在neo4j中插入唯一的节点和关系.

我在用什么: -

数据大小和类型:

TSV文件[多个].每个包含超过8百万行[每行代表一个节点或关系].节点有10多个文件.[= 2百万个节点]和另外200万个关系.

我使用UniqueNodeFactory插入节点.并且顺序插入,找不到任何方式插入批处理保留唯一节点.

问题是插入数据需要花费大量时间.例如,插入30万个唯一节点花了差不多一天.有没有办法固定插入?

neo4j

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

Neo4j,Cypher:以排序链表的形式连接图中的现有节点

我有一个问题是以排序链表的形式(在单个密码查询中)连接数据库中的电影列表.

电影节点数:25L

MATCH (movie:Movie)
WITH movie
ORDER BY movie.rating DESC
WITH collect(movie) as p
FOREACH (n IN nodes(p)| CREATE PREV_MOVIE-[:NextMovie]->(n) )
RETURN p
Run Code Online (Sandbox Code Playgroud)

这将需要参考以前的节点PREV_MOVIE和当前节点nFOREACH建立两者之间的关系.如何在这里找到对前一个节点的引用PREV_MOVIE,或者还有其他方法可以做同样的事情吗?

neo4j cypher

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

Neo4J中嵌套的FOREACH Cypher运行无限

我尝试运行以下查询,其中我在数据库和10个国家/地区拥有10个链.并使用20个地址的数组.然后我循环通过那些为国家,连锁店和地址的每个组合创建一个商店,期待10*10*20组合 - 2000个商店.但相反,查询运行直到创建大约200,000条记录,然后停止并显示未知错误.

MATCH (Chains:Chain), (Countries:Country)
WITH Collect(Chains) as ch, 
     Collect(Countries) as cou, 
['Ullevål','Blindern','Centrum','Kringså','Lysaker','Skøyen','Fornebu','Stortinget','Nationalteatre','KarlJohan',
'Gamle','Grunerløkka','Grønland','Majorstuen','Snarøya','Asker','Sandvika','Drammen','Gothenburg','Stockholm'] as addresses

FOREACH(country in cou |
    FOREACH (c in ch |
            FOREACH (a in addresses |
                CREATE (s:Store {name:c.name+"_"+a, address:a})
                CREATE (s-[:BELONGS_TO]->c)
                CREATE (s-[:IN]->country)               )))
Run Code Online (Sandbox Code Playgroud)

neo4j cypher

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

在cypher查询中强制索引时出错

我使用的是Neo4j的2.0.1版本.

我有一个名为prod的标签和一个名为id的属性.

我怀疑如下:

以下查询返回结果非常快:

profile match (p:PROD) where p.id="111" return p;

SchemaIndex(identifier="n", _db_hits=0, _rows=2, label="Prod", query="Literal(111)", property="id")
Run Code Online (Sandbox Code Playgroud)

但是当我使用IN并强制使用索引时使用列表:

profile match (p:PROD) USING INDEX p:PROD(id) where p.id IN ["111","222"] return p;
Run Code Online (Sandbox Code Playgroud)

它显示以下错误:

IndexHintException: Cannot use index hint in this context. The label and property comparison must be specified on a non-optional node
Label: `prod`
Property name: `id`
Run Code Online (Sandbox Code Playgroud)

为什么我不能使用USE INDEX方法来指定索引.我究竟做错了什么?我该如何纠正呢?

neo4j cypher

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

在neo4j中从csv import创建关系时遇到问题

我使用这样的命令从csv成功创建命名节点:

load csv with headers from "file:/Users/lwyglend/Developer/flavourGroups.csv" as
flavourGroup                
create (fg {name: flavourGroup.flavourGroup}) 
set fg:flavourGroup 
return fg
Run Code Online (Sandbox Code Playgroud)

但是,我没有运气使用csv中的load来创建与类似命令的关系:

load csv with headers from "file:/Users/lwyglend/Developer/flavoursByGroup.csv" as
relationship 
match (flavour {name: relationship.flavour}), 
        (flavourGroup {name: relationship.flavourGroup}) 
create flavour-[:BELONGS_TO]->flavourGroup
Run Code Online (Sandbox Code Playgroud)

从头部的csv文件看起来有点像这样:

flavour, flavourGroup
fish, marine
caviar, marine 
Run Code Online (Sandbox Code Playgroud)

没有错误,命令似乎执行,但实际上没有创建任何关系.

如果我在名称上做一个简单的匹配:鱼和名称:海洋然后构建属于鱼和海洋预先存在的节点与密码之间的关系,这种关系设置得很好.

从csv导入是否有问题?我的代码错了吗?我玩了几个不同的东西,但作为neo4j的全新内容,你会欣赏任何建议.

csv neo4j cypher

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

Neo4j cypher查询中的性能

我有以下密码查询:

MATCH (country:Country { name: 'norway' }) <- [:LIVES_IN] - (person:Person)
WITH person
MATCH (skill:Skill { name: 'java' }) <- [:HAS_SKILL] - (person)
WITH person 
OPTIONAL MATCH (skill:Skill { name: 'javascript' }) <- [rel:HAS_SKILL] - (person)
WITH person, CASE WHEN skill IS NOT NULL THEN 1 ELSE 0 END as matches 
ORDER BY matches DESC 
LIMIT 50 
RETURN COLLECT(ID(person)) as personIDs
Run Code Online (Sandbox Code Playgroud)

添加更多节点时似乎表现更差.现在只有5000个Person节点(Person节点可以与Skill节点有多个HAS_SKILL关系).现在,执行查询大约需要180毫秒,但添加另外1000个具有关系的Person节点会为查询添加30-40毫秒.我们计划拥有数百万个Person节点,因此每1000人添加40毫秒是不行的.

我在查询中使用参数而不是上面查询中的'norway','java','javascript'.我已经创建了索引:国家(名称)和:技能(名称).

我的查询目标是匹配生活在指定国家(挪威)的每个人,这些人也具有'java'技能.如果此人也具有技能'javascript',则应在结果中命令更高.

如何重构查询以提高性能?

编辑:

如果我转出,那么:Country节点似乎也存在问题

MATCH (country:Country { name: 'norway' }) <- [:LIVES_IN] - (person:Person)
Run Code Online (Sandbox Code Playgroud)

MATCH (city:City …
Run Code Online (Sandbox Code Playgroud)

neo4j cypher

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

Maven插件和依赖项之间有什么区别?

我正在使用Neo4j和MongoDB和Grails,我想知道Maven Neo4j插件是否也为我的构建提供了Neo4j依赖项.同样适用于MongoDB.

我很迷惑.我应该使用什么,插件或依赖项?有什么不同?

dependencies neo4j maven

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

防止neo4j中出现无限循环

我正在学习neo4j,并且正在制作类似于组织层次结构的东西,其中一个人有一个经理,他有一个经理,他有一个经理等等.

起初我使用了assumptoin,公司的所有者没有经理,并且我的需求正在努力向所有者展示自己和管理层.

为了解决这个问题,我使用了以下查询,它可以满足我的简单需求.

MATCH(baseEmployee:Employee)-[:MANAGEDBY*0..]->(manager) 
where baseEmployee.Name = 'Josh'
RETURN manager.Name;
Run Code Online (Sandbox Code Playgroud)

但如果老板让经理自言自拔,会发生什么.根据我的理解,这将导致无限循环.

如果manager = currentEmployee,我如何阻止匹配跟随MANAGEDBY路径?

neo4j

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

使用py2neo时写下关于neo4j的性能

我想在我的应用程序中使用neo4j.现在我在实验中面临一些关键问题.问题陈述分为几个部分.

背景:

用例是从互联网获取数据,数据规模为十亿,现场是实时,关系只是具有多个属性的人对人.

组态:

机器配置:

  cpu: 24 processors, Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz
  memory: 165 203 696 kB
  jdk: java version "1.7.0_67",  Java(TM) SE Runtime Environment (build 1.7.0_67-b01),  Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
  Linux version: 2.6.32-431.el6.x86_64
  OS: CentOS release 6.5
Run Code Online (Sandbox Code Playgroud)

Neo4j配置:

  enterprise version: 2.1.5
  jvm heap: default
  objects cache:
  neostore.nodestore.db.mapped_memory=512M
  neostore.relationshipstore.db.mapped_memory=6G
  neostore.propertystore.db.mapped_memory=5G
  neostore.propertystore.db.strings.mapped_memory=1G
  neostore.propertystore.db.arrays.mapped_memory=1G
Run Code Online (Sandbox Code Playgroud)

客户配置:

  pyneo, version 1.6.4
Run Code Online (Sandbox Code Playgroud)

客户代码:

CYPHER_WEIGHT_COMPUTE='r.weight=r.weight+r.weight*EXP((TIMESTAMP()-r.update_time)/(r.half_life*1.0))'

// Initiation, create constraints according the label on id
self.query=neo.CypherQuery(self.graph_db,'CREATE CONSTRAINT ON (pn:UID)
ASSERT …
Run Code Online (Sandbox Code Playgroud)

performance neo4j py2neo

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

防止neo4j在启动时启动(Ubuntu 14.04)

目前,每次启动Ubuntu时都会启动Neo4j服务.这是不受欢迎的行为,因为我使用它作为开发机器并不总是需要运行neo4j.

这是它的init.d脚本.你认为我应该编辑这个脚本以满足我的需求吗?我该怎么做呢?有更简单的替代方案吗?如果可能的话,我宁愿避免修改此代码.

#! /bin/sh

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Neo4j Graph Database"
NAME=neo4j
DAEMON=/var/lib/$NAME/bin/$NAME
DAEMON_ARGS="start"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME-service

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
. /lib/lsb/init-functions

do_start()
{
    # Return
    #   0 if daemon has been started
    #   1 if daemon was already running …
Run Code Online (Sandbox Code Playgroud)

ubuntu init neo4j

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

标签 统计

neo4j ×10

cypher ×5

csv ×1

dependencies ×1

init ×1

maven ×1

performance ×1

py2neo ×1

ubuntu ×1