地理空間距離計算優化

zhanlijun發表於2014-10-12

http://www.cnblogs.com/LBSer/p/4020306.html

在美團技術部落格發表《地理空間距離計算優化》一文,有相似場景的朋友可以參考。

https://tech.meituan.com/2014/09/05/lucene-distance.html

開啟美團app,不管是篩選團購還是篩選商家,預設的排序項都是“離我最近”或者“智慧排序”(如下圖所示)。

不管是“離我最近”還是“智慧排序”,都涉及到計算使用者位置與各個團購單子或者商家的距離(注:在智慧排序中距離作為一個重要的引數參與排序打分)。以篩選商家為例,北京地區有5~6w個POI(本文將商家稱之為POI),當使用者進入商家頁,請求北京全城+所有品類+離我最近/智慧排序時,我們篩選服務需要計算一遍使用者位置與北京全城所有POI的距離。

這種大量計算距離的場景十分消耗資源,從測試來看目前5w個點僅計算一遍距離就需要7ms,而到100w的時候就需要140多ms,隨著資料的快速增長,篩選服務的效能將會非常堪憂。

如何優化距離的計算,進而提高計算速度、降低cpu使用率已經迫在眉睫。美團移動後臺團購組在此方向上進行了些許探索,下文將分為4部分展開:1)地理空間距離計算原理;2)Lucene使用的距離計算公式;3)優化方案;4)實際應用。

......

相關文章