近期發現我的代碼有個bug
用es將搜索內容按距我最近進行排序發現結果變成了
32,159,66,42,255這種亂序的
最后通過仔細排查發現上面的距離是我計算出的,而es自己計算出的距離是
24,51,77,163,190這種順序是正確的
通過在地圖上用經緯度計算檢查發現我自己的距離演算法是沒問題的
但是es計算的距離為什么會和我差的這么多?
甚至有一個距離我計算是1500多,而es計算是3000多
例如
106.530495,29.60383 到 106.526634,29.600001
我計算是 447米
es計算是 566米
別給我說坐標系的問題,我用了七八個坐標系算的,都是446米或447米,我能接受幾米的誤差,但是這種超過20%的誤差,甚至50%的誤差無法容忍
求ES大神幫忙看看
GET /busi/info/_search
{
"query": {
"term": {
"addrProvince": {
"value": "上海市"
}
}
},
"sort": [
{
"_geo_distance": {
"position": [106.530495, 29.60383],
"order": "asc",
"unit": "m"
}
}
]
}
{
"_index": "busimerc",
"_type": "info",
"_id": "2011031530045414561",
"_score": null,
"_source": {
"id": "222",
"addrProvince": "上海市",
"name": "測驗資訊",
"position": {
"lat": 29.600001,
"lon": 106.526634
}
},
"sort": [
566.2403312493584
]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/201694.html
標籤:搜索引擎技術
