空間查詢有著廣泛的應用場景,例如,我們開啟手機地圖檢視附近有哪些美食,或者網約車時為使用者分配最近的車輛,一切基於地理座標的查詢,都需要空間查詢的幫助。
neo4j-contrib有乙個著名的空間外掛程式 就能實現上訴功能。
然鵝,,neo4j spatial已經有16個月未更新,neo4j 4.0的發布,大量的api重寫導致neo4j spatial已不可用, 所以我抽取了neo4j spatial中的空間索引部分並適配至neo4j 4.0,擼了乙個4.x版本能用的空間索引出來,希望對大家有幫助~~~~~~~
專案位址
使用示例:
新建空間索引
rtreeindex rtreeindex = rtreeindexmanager.createindex(db, 「index1」, 「geometry」, 64);
為node加入空間索引:
transaction tx = db.begintx();
node node = tx.createnode(testlabel);//新建節點
point geo = wkbreader.read(「point(10 20)」);
byte wkb = wkbwriter.write(geo);//轉為wkb
node.setproperty(「geometry」, wkb);//設定空間字段值,必須為wkb格式
rtreeindex.add(node,tx);//加入索引
//輸入乙個矩形範圍,查詢矩形覆蓋的節點
double bbox = new double;
try (transaction tx = db.begintx()) );
}//輸入乙個geometry,查詢geometry覆蓋的節點
geometry inputgeo = new wktreader().read(「polygon ((11 24, 22 28, 29 15, 11 24))」);
try (transaction tx = db.begintx()) );
}
Neo4j 空間查詢
1.neo4j自帶函式進行簡單計算 neo4j自帶distance point1,point2 函式,返回乙個浮點數,表示同一座標參照系中兩點之間的測地距離,可以使用round函式來進行四捨五入。目前neo4j3.3版本不支援return直接返回point型別,3.4版本可以。節點型別 節點格式 詳...
neo4j查詢優化
1 使用match時,避免使用多個標籤。搜尋使用了2個標籤,同樣的事情竟然訪問了資料庫801次。這是因為cypher執行了額外的 haslabel 過濾器。可以通過使用專門的關係型別來解決這樣的問題,比如為他們新增published和drafted關係,然後用關係來找到指定使用者的published...
neo4j 查詢cypher話語
engine.execute start n node people return n params skip和limit的數字引數12 345mapparams new hashmap params.put s 1 params.put l 1 executionresult result eng...