【发布时间】:2010-02-22 12:45:05
【问题描述】:
我正在从事化学/生物学项目。我们正在构建一个网络应用程序,用于将用户的实验数据与参考数据库中的预测数据进行快速匹配。参考数据库将包含多达一百万个条目。一个条目的数据是一个元组列表(向量),其中包含一个介于 0.0 和 20.0 之间的浮点值和一个介于 1 和 18 之间的整数值。例如 (7.2394 , 2) , (7.4011, 1) , (9.9367, 3) , ... ETC。 用户将输入一个类似的元组列表,然后网络应用程序必须返回 - 比如说 - 前 50 个最匹配的数据库条目。
有一点很关键:搜索算法必须考虑到查询数据和参考数据之间的差异,因为两者都可能在浮点值中包含小错误(而不是在整数值中)。(The查询数据可能包含错误,因为它来自真实实验,而参考数据是预测结果。)
编辑 - 移动文本以回答 -
我们如何在 100 万条记录中获得 1 个查询的有效排名?
【问题讨论】:
-
您能再描述一下数据的含义吗?整数的含义是什么?两个条目之间的距离是如何定义的?
-
可能对物质 id 有药理活性
-
我无法给出确切的含义,但数据描述了一个二维图,其中浮点值是 x 值,整数是 y 值。通过沿 x 轴(浮点值)对数据进行分箱来定义距离,然后通过取整数值减法的绝对值来比较来自查询和参考的相应分箱。总结所有差异
-
@Stefano:不,这不是针对物质 id 的药理活性
-
对浮点值进行分箱并添加整数差异似乎没有任何意义,因为浮点数有错误并且整数是正确的。使用您当前的距离度量 (6.999, 18) 和 (7.001, 18) 将是 (6.901,1) 和 (6.999,18) 的两倍多。
标签: database algorithm math comparison performance