1

是否可以使用自动索引功能在 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 打开数据库时,该索引将是可见的(并且将继续自动索引数据,因为属性被添加到顶点和边)?

4

1 回答 1

1
  1. 您必须彻底关闭批处理索引和批处理插入器
  2. 您可能不想索引所有属性,只索引用于查找节点的关键属性
  3. 您必须在 neo4j 配置中为之后启动的数据库以及在批量插入期间索引的相同属性启用自动索引
于 2014-01-27T11:31:03.773 回答