2013-04-20 74 views
0

我想實現一個功能,其中附近場館的列表可以按用戶位置的距離排序。我現在的做法是將緯度和經度值存儲爲浮點數,並且查詢查找用戶位置的+/-值(搜索延伸到用戶位置的北部,南部,東部和西部的正方形用戶)。然後,我對結果集進行快速計算,確定距離並對業務邏輯進行排序。現在我用誰也主要用於關係數據庫(應用程序正在運行使用Hibernate的MySQL)的人的角度接近這一點,但有一個更好的方法(在不同的數據庫像Neo4j的或更好的列類型?)什麼是存儲可以按距離查詢的位置的最佳方法?

此外,我的方法有一個半複雜的解決方法,用於查詢0或0或0附近的查詢)。

至於最佳的我的工作定義我在尋找可縮放的潛在在10英里半徑數百個場館和幾十萬的總場地的方法。換句話說,SimpleGEO大約只有1%,所以如果這個問題的規模不需要最佳解決方案,那麼「你沒事」也會是一個有趣的答案,儘管我會在知道原因的基礎上組合起來)

回答

1

你可以看看Lucene的/ Solr的。至少從v2.9開始至少有Lucene supported location-aware search

如果你擔心了Lucene的複雜性,有Hibernate Search這是爲了透明地複製在所有數據庫更改Lucene的。

+0

我其實已經實現了Lucene搜索已經(和與Hibernate Search的太)的任何方向。這將是很好的展望。謝謝! – 2013-04-20 17:47:43

1

MongoDB對地理空間索引和對查詢語言的擴展的本機支持,以支持查詢地理空間文檔的許多不同方式。

但是,如果你正在尋找關係型數據庫PostgreSQL的嘗試與PostGIS的。

+0

你能提供的哪裏開始,或是否真的只有一兩次與MongoDB的不錯的選擇) – 2013-04-20 17:21:09