部分匹配的数据搜索
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))
我有一个包含 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))