我使用的是Neo4j 1.8.2和spatial 0.9。
当我试图在已经包含索引的现有图上获取空间索引的句柄时,我得到了以下异常:
线程"main“java.lang.IllegalArgumentException中出现异常:提供的索引配置:{geometry_type=point,lon=lon,provider=spatial,lat=lat}与存储的配置以有效方式不匹配:{geometry_type=point,lon=lon,provider=spatial,org.neo4j.kernel.IndexManagerImpl.assertConfigMatches(IndexManagerImpl.java:156) at org.neo4j.kernel.IndexManagerImpl.findIndexConfig(IndexManagerImpl.java:137) at org.neo4j.kernel.IndexManagerImpl.getOrCreateIndexConfig(IndexManagerImpl.java:198) at org.neo4j.kernel.IndexManagerImpl.getOrCreateNodeIndex(IndexManagerImpl.java:301) at org.neo4j.kernel.IndexManagerImpl.forNodes(IndexManagerImpl.java:289) at TestSpatialIndexFetch.createSpatialIndex(TestSpatialIndexFetch.java:22) at TestSpatialIndexFetch.main的'testspatial‘的lat=lat(在sun.reflect.NativeMethodAccessorImpl.invoke0(Native方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)在java.lang.reflect.Method.invoke(Method.java:597)在com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
如果我删除数据库,索引创建成功。如果我现在使用这个数据库来获取索引,它将失败。
有什么想法吗?
示例测试代码:
public class TestSpatialIndexFetch {
public static void main(String[] args) {
EmbeddedGraphDatabase db = new EmbeddedGraphDatabase("c://neo4jdbs//testindex");
registerShutdownHook(db);
Index<Node> index = createSpatialIndex(db, "testspatial");
}
private static Index<Node> createSpatialIndex(EmbeddedGraphDatabase db, String indexName) {
return db.index().forNodes(indexName, SpatialIndexProvider.SIMPLE_POINT_CONFIG);
}
private static void registerShutdownHook( final GraphDatabaseService graphDb )
{
Runtime.getRuntime().addShutdownHook( new Thread()
{
@Override
public void run()
{
graphDb.shutdown();
}
} );
}
}发布于 2013-05-29 13:25:54
已在http://m2.neo4j.org/content/repositories/releases/org/neo4j/neo4j-spatial/0.9.1-neo4j-1.8.2/修复并发布
https://stackoverflow.com/questions/16786892
复制相似问题