#neo4j
#neo4j
Вопрос:
Я использую следующий код для пакетной вставки данных в базу данных neo4j, но после запуска кода шифр «match (n) return count (n)» возвращает 0. Я пробовал много раз, но безуспешно, вы можете мне помочь? Большое спасибо!
int denseNodeThreshold = GraphDatabaseSettings.dense_node_threshold.defaultValue();
DatabaseLayout tempStoreDir = ((GraphDatabaseAPI)graphDb).databaseLayout();
final FileSystemAbstraction fileSystem = new DefaultFileSystemAbstraction();
batchInserter = BatchInserters.inserter(tempStoreDir, fileSystem, configuration(denseNodeThreshold));
batchInserter.createDeferredSchemaIndex(personLabel).on("name").create();
final ArrayList<Long> nodeIds = new ArrayList<>();
//没有索引,通过Neo4j Desktop打开左侧没有 Node Labels和Relationship Types,有索引的情况下,count为0
for(int i=0; i<1e5; i ){
Map<String, Object> properties = new HashMap<>();
properties.put( "name", UUID.randomUUID().toString() );
long nodeId = batchInserter.createNode( properties, personLabel );
nodeIds.add(nodeId);
}
final Random random = new Random();
for(int i=0; i<1e3; i ){
Long from = nodeIds.get((random.nextInt() % nodeIds.size() nodeIds.size()) % nodeIds.size());
Long to = nodeIds.get((random.nextInt() % nodeIds.size() nodeIds.size()) % nodeIds.size());
batchInserter.createRelationship( from, to, knows, null );
}
Ответ №1:
Добро пожаловать!
Вы не можете использовать сервер в процессе, поскольку его файлы удаляются после каждого завершения работы, что объясняет, почему при перезапуске счетчик всегда равен 0.
Кроме того, вы должны закрыть блок BatchInserter
с помощью попытки с ресурсами, чтобы убедиться, что изменения будут сброшены, как только вы закончите создание узлов и связей:
try (BatchInserter batchInserter = BatchInserters.inserter(tempStoreDir, fileSystem, configuration(denseNodeThreshold))) {
// [...]
}
Комментарии:
1. Большое спасибо. Я изменил код и запустил его по-своему. Он по-прежнему считает сбой.
2. Код можно найти здесь. github.com/pxfoost/neo4j-demo/blob/master/neo4j-demo/src/main /…