Neo4J:批量执行时自动索引

时间:2014-01-26 19:40:09

标签: neo4j tinkerpop

是否可以使用自动索引功能在Neo4J上导入数据?我正在尝试使用BatchInserter和BatchInserterIndex导入数据,如下例所示:

BatchInserter inserter = BatchInserters.inserter("/home/fmagalhaes/Neo4JDatabase");
BatchInserterIndexProvider indexProvider = new LuceneBatchInserterIndexProvider(inserter);
BatchInserterIndex nodeIndex = indexProvider.nodeIndex("node_auto_index", MapUtil.stringMap("type","exact"));
BatchInserterIndex relIndex = indexProvider.relationshipIndex("relationship_auto_index", MapUtil.stringMap("type","exact"));
...
inserter.createNode(vertexId, properties);
nodeIndex.add(vertexId, properties);
...

问题是当批处理完成后,我正尝试通过执行以下操作来使用Blueprints通用API打开此数据库:

Graph g = new Neo4jGraph("/home/fmagalhaes/Neo4JDatabase");
Set<String> nodeIndices = ((KeyIndexableGraph)g).getIndexedKeys(Vertex.class);
Set<String> relIndices = ((KeyIndexableGraph)g).getIndexedKeys(Edge.class);

并且nodeIndices和relIndices都为空。我在Blueprints API上打开图形数据库时禁用自动索引功能。是否可以在批处理期间创建自动索引,以便在使用Blueprints API打开数据库时,此索引将可见(并将在属性添加到顶点和边时继续自动索引数据)?

1 个答案:

答案 0 :(得分:1)

  1. 您必须干净地关闭批处理索引和批处理插入器
  2. 您可能不想索引所有属性,只是用于查找节点的关键属性
  3. 你必须在你之后开始的数据库的neo4j配置中启用自动索引,以及在批量插入期间索引的相同属性