Bik*_*ash 5 php mysql geolocation elasticsearch
我正在开发一个工作门户,最终用户将根据其位置和接近半径搜索工作.目前,REST API由SLIM和MySQL提供支持.在Jobs表中,每行都有纬度和经度.我在这里搜索了这个,偶然发现了使用MySQL的Geo Distance搜索.
SELECT latitude, longitude, SQRT(
POW(69.1 * (latitude - $lat), 2) +
POW(69.1 * ($long - $long) * COS(latitude / 57.3), 2)) AS distance
FROM TableName HAVING distance < 25 ORDER BY distance;
Where
$lat = User latitude
$long = User longitude
Run Code Online (Sandbox Code Playgroud)
现在我还有另外两个问题.
如果您可以为搜索性能提出任何可能有用的建议.
SELECT latitude, longitude, SQRT(
POW(69.1 * (latitude - $lat), 2) +
POW(69.1 * ($long - longitude) * COS(latitude / 57.3), 2)) AS distance
FROM TableName HAVING distance < 25 ORDER BY distance;
Run Code Online (Sandbox Code Playgroud)
哪里
$ lat =用户纬度
$ long =用户经度
我已经去了下面 -
SELECT id,
name,
lat,
lng,
ROUND((6371 * acos(
cos(radians($lat)) * cos(radians(lat)) * cos(radians(lng) - radians($lng)) +
sin(radians($lat)) * sin(radians(lat)))), (2)) AS distance
FROM jobs
HAVING distance < 50
ORDER BY distance;
Run Code Online (Sandbox Code Playgroud)
我已经用数据进行了基准测试,发现这比 Mukesh 的答案稍快,比 @jision 的答案好 2 倍。