部分匹配的数据搜索

Data search with partially match

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

A         B         C 
test1    2.0123    3.0123
test2    2.1234    3.1234

在我的程序中,我想在数据库中搜索最合适的匹配项, 例如,我将键入值 b=2.133,c=3.1342,然后它会 return 我测试 2,我该怎么做?

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

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

您似乎在寻找 k-d tree 将二维 space(作为键的属性 B、C)映射到一个值(属性 A)。

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

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

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

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))