与的数据搜索部分匹配



我有一个包含列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,找到了最匹配的值。

看起来您正在寻找一个k-d树,它将二维空间(属性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)

相关内容

  • 没有找到相关文章

最新更新