我有一个用neo4j 2.1.0-M02托管的现有图形数据库。数据是使用BatchInserter创建的,但没有任何索引。不久之后,我通过这样做添加了使用Cypher的索引:
CREATE INDEX ON :MyLabel(myId)
注意:我的原始帖子将下面提到的每个API链接到相应的neo4j在线文档,但我不能发布两个以上的链接,因为我是新用户。您可以在此处找到以下所有类别和方法:http://api.neo4j.org/2.1.0-M02/allclasses-frame.html
现在我想从外部源导入更多关系。所有传入关系数据都包含对现有节点的myId的引用。 BatchInserter似乎是另一种方法,但createRelationship方法需要节点ID。
我需要将传入的myIds转换为数据库的节点ID,我想利用我之前创建的索引。看起来我需要使用BatchInserterIndex,它使用BatchInserterIndexProvider提供。我能找到的唯一的BatchInserterIndexProvider是LuceneBatchInserterIndexProvider,但它的nodeIndex方法需要一个“名称”。
这就是我被困住的地方。我给它起什么名字?我之前的Cypher“CREATE INDEX ON”语句没有给我显示名称,当我在shell中执行“:schema”命令时,我没有看到名称。这是整个输出:
Indexes
ON :MyLabel(myId) ONLINE
No constraints
如何使用现有架构索引批量导入?文字字符串“:MyLabel(myId)”是我应传递的名称吗?我缺少一个不同的阶级或策略吗?
我可以在网上找到的所有示例都是在同一次运行中初始化数据和索引,或者他们从代码中创建了索引,其名称可以在以后使用。
答案 0 :(得分:0)
不幸的是,你不能使用带有模式索引的批量插入器。
您是否使用普通的批量插入器API?
然后我会推荐以下内容。
当您开始批量插入过程时:迭代db的所有节点,获取它们的node-id并将它们myId
放入一个hashmap(或数组)中,并使用它来查找node-id为你的关系插入。