部分匹配的数据搜索

时间:2015-03-18 09:38:32

标签: database algorithm match best-fit

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

A         B         C 
test1    2.0123    3.0123
test2    2.1234    3.1234

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

请给我一些想法或关键字谷歌,因为我的想法是搜索算法,但似乎搜索算法更完全匹配,并没有找到最佳匹配。或者这是binpacking算法?我怎样才能解决这个问题。

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

2 个答案:

答案 0 :(得分:2)

好像你正在寻找一个k-d tree,它将二维空间(属性B,C是关键)映射到一个值(属性A)。

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

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

答案 1 :(得分: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))