0

我有一个包含 A、B、C 列和行数据的数据库,例如:

A         B         C 
test1    2.0123    3.0123
test2    2.1234    3.1234

在我的程序中,我想在数据库中搜索最佳匹配,例如我将键入值 b=2.133,c=3.1342,然后它将返回我 test2,我该怎么做?

请给我一些想法或关键词给谷歌,因为我在想的是搜索算法,但似乎搜索算法更多的是完全匹配,而不是找到最合适的匹配。或者这是装箱算法?我该如何解决这个问题。

我得到了大约 5 列 B、C、D、E、F 并找到最匹配的值。

4

2 回答 2

2

似乎您正在寻找将二维空间(属性 B、C 是键)映射到值(属性 A)的kd 树。

KD 树允许有效查找给定查询的最近邻居,这似乎正是您所追求的。

请注意,如果需要,相同的 DS 将通过增加键的维度有效地处理更多属性。

于 2015-03-18T10:18:23.103 回答
0

看看这个(最近邻搜索):

http://en.wikipedia.org/wiki/Nearest_neighbor_search

在这个最简单的算法(线性搜索)在 SQL 中看起来像这样(对于 b=2.133,c=3.1342):

SELECT A, MIN(SQRT(POW(B-2.133,2)+POW(C-3.1342,2))) FROM tablename;

即从点(sqrt((b1-b2)^2 +(c1-c2)^ 2))中取出具有最小向量距离的行

于 2015-03-18T11:49:02.550 回答