Neo4j Spatial 3.0.2: не найден провайдер индекса «пространственный»

Я пытаюсь создать пространственную базу данных с neo4j 3.0.2 и neo4j -atial для 3.0.2. Я установил плагин, и я проверил, что плагин работает с cURL curl -v http://neo4j:neo4j@localhost:7474/db/data/ который выводит следующее:

{
"extensions" : {
"SpatialPlugin" : {
"addSimplePointLayer" : "http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/addSimplePointLayer",
"addNodesToLayer" : "http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/addNodesToLayer",
"findClosestGeometries" : "http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/findClosestGeometries",
"addGeometryWKTToLayer" : "http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/addGeometryWKTToLayer",
"findGeometriesWithinDistance" : "http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/findGeometriesWithinDistance",
"addEditableLayer" : "http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/addEditableLayer",
"addCQLDynamicLayer" : "http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/addCQLDynamicLayer",
"addNodeToLayer" : "http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/addNodeToLayer",
"getLayer" : "http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/getLayer",
"findGeometriesInBBox" : "http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/findGeometriesInBBox",
"updateGeometryFromWKT" : "http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/updateGeometryFromWKT",
"findGeometriesIntersectingBBox" : "http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/findGeometriesIntersectingBBox"}
},
"node" : "http://localhost:7474/db/data/node",
"relationship" : "http://localhost:7474/db/data/relationship",
"node_index" : "http://localhost:7474/db/data/index/node",
"relationship_index" : "http://localhost:7474/db/data/index/relationship",
"extensions_info" : "http://localhost:7474/db/data/ext",
"relationship_types" : "http://localhost:7474/db/data/relationship/types",
"batch" : "http://localhost:7474/db/data/batch",
"cypher" : "http://localhost:7474/db/data/cypher",
"indexes" : "http://localhost:7474/db/data/schema/index",
"constraints" : "http://localhost:7474/db/data/schema/constraint",
"transaction" : "http://localhost:7474/db/data/transaction",
"node_labels" : "http://localhost:7474/db/data/labels",
"neo4j_version" : "3.0.2"* Connection #0 to host localhost left intact
}* Closing connection #0

Теперь я могу создать новый simplePointLayer:

// define entity manager
$client = $this->get('neo4j.spatial_manager')->getClient();// 1. Create a pointlayer
$request = $client->request('POST',
'/db/data/ext/SpatialPlugin/graphdb/addSimplePointLayer',
[
'json' => [
'layer' => 'geom',
'lat' => 'lat',
'lon' => 'lon',
],
]
);

var_dump($request);

Это создает пространственный корневой узел с rTree. Но когда я сейчас хочу создать пространственный индекс со следующим:

// 2. Create a spatial index
$request = $client->request('POST',
'/db/data/index/node/',
[
'json' => [
'name' => 'geom',
'config' => [
'provider' => 'spatial',
'geometry_type' => 'point',
'lat' => 'lat',
'lon' => 'lon',
],
],
]
);

var_dump($request);

Я сталкиваюсь с сообщением об ошибке:

"message" : "No index provider 'spatial' found.

Что я делаю неправильно? Я проверил много форумов и т. Д., Но всегда кажется, что ответ заключается в установке пространственного плагина, который есть у меня, и он, кажется, работает в соответствии с первым выводом.

РЕДАКТИРОВАТЬ 15.06.2016

Что странно, что я могу добавить узлы в rTree:

   // Create a node with spatial data
$json = [
'team' => 'REDBLUE',
'name' => 'TEST',
'lat' => 25.121075,
'lon' => 89.990630,
];
$response = $client->request('POST',
'/db/data/node',
[
'json' => $json
]
);

$node = json_decode($response->getBody(), true)['self'];

// Add the node to the layer
$response = $client->request('POST',
'/db/data/ext/SpatialPlugin/graphdb/addNodeToLayer',
[
'json' => [
'layer' => 'geom',
'node' => $node,
],
]
);

$data = json_decode($response->getBody(), true);

var_dump($data);

И я могу запросить узлы через REST:

    $request = $client->request('POST',
'/db/data/ext/SpatialPlugin/graphdb/findGeometriesWithinDistance',
[
'json' => [
'layer' => 'geom',
'pointX' => 89.99506,
'pointY' => 25.121260,
'distanceInKm' => 10,
],
]
);

$data = json_decode($request->getBody(), true);

var_dump($data);

Но почему он не позволяет мне создать индекс? Или это делает индексацию автоматически? И если да, то как я могу делать запросы, используя CYPHER (например, в веб-консоли)?

Любая помощь будет оценена! ура

2

Решение

Поставщик индекса был удален (тогда это был единственный способ обеспечить интеграцию с Cypher) в пользу пользовательских процедур для Spatial.

увидеть: https://github.com/neo4j-contrib/spatial/blob/master/src/test/java/org/neo4j/gis/spatial/procedures/SpatialProceduresTest.java#L113

Поскольку это новый основной выпуск (для 3.0), мы посчитали целесообразным удалить поставщика индекса.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]