MySQLで k最近傍アルゴリズム(k-NN) クエリを実行できますか。PostGISでPostgreSQLの最も近い点を見つけるために、空間インデックスでkNNクエリを実行できます <->
SELECT ST_AsText(geom), city
FROM person.address
ORDER BY geom <-> 'POINT(-121.626 47.8315)'
FETCH FIRST 7 ROWS ONLY;
DECLARE @g geography = 'POINT(-121.626 47.8315)';
SELECT TOP(7) SpatialLocation.ToString(), City
FROM Person.Address
WHERE SpatialLocation.STDistance(@g) IS NOT NULL
ORDER BY SpatialLocation.STDistance(@g);
PostgreSQLとSQL Serverの両方にKNNがあります。 MySQLで空間インデックスに対してKNNを実行するための<->
に相当するものは何ですか?
KNNが何であるかわからない場合は、 ここにその説明を表示できます
KNNシステムは、PostGIS Rツリーインデックス内の境界ボックス間の距離を評価することによって機能します。
インデックスはジオメトリのバウンディングボックスを使用して作成されるため、ポイントではないジオメトリ間の距離は不正確になります。これらはジオメトリのバウンディングボックス間の距離になります。
ここでのキッカーは、KNNアプローチ、
WHERE
句を使用してクエリを距離に制限する必要がありますこの質問は、具体的には、ジョブが完了する方法についてです。 同じ結果が得られることに気づきました。各ポイントからすべてのotherポイント*までの距離を計算することにより、かなりの作業でORDER
ing、およびLIMIT
ing。
要するに、MySQLもMariaDBもそうではありません。それらはRツリーを使用するので、実装するのは不可能に思えません。どちらのバグトラッカーでも、この機能のリクエストを見たことがありません。