有效地搜索大型DB以获得类似的记录

时间:2014-01-24 00:43:15

标签: database algorithm

假设以下内容:作为输入,可以获得由N个数字和布尔值组成的记录。必须将该向量与向量数据库进行比较,其中包括M个额外的“结果”元素。这意味着,数据库保存P N + M大小的向量。

数据库中的每个向量都将最后一个元素保存为布尔值。练习的目的是尽可能快地找到与输入向量最接近的记录,并得到以TRUE布尔结尾的结果向量。

为了使上述内容更易于理解,请举出以下示例:

包含个人健康信息的数据库,包含以下记录:

  • 年龄
  • 性别
  • 重量
  • lenght
  • hearth issues(boolean)
  • 肺问题(布尔)
  • 住所

  • 替代计划选择(如果已完成)

  • 接受报价

然后程序会搜索得到的输入 36男性185磅68英寸假纽约

然后根据数据库中的内容,找出最适合客户的计划。

我知道一些有助于这样做的方法,例如levenshtein距离法。但是,大多数方法都涉及在整个数据库中搜索最佳匹配。

是否有任何算法,方法可以减少所需的处理能力/时间?我无法想象,例如。保险机构不使用更有效的方法来搜索他们的数据库......

对此领域的任何见解将不胜感激!

1 个答案:

答案 0 :(得分:0)

假设:这是一个关系数据库。如果它是NOSQL,那么请提供有关哪个db的更多信息。

您是否可以选择创建位图索引?他们可以减少返回的记录数量。这对几乎所有的columsn都很有用,因为基数很低。

之后剩下的唯一一个是住所,你应该使用Geo距离。

如果您无法创建位图索引,那么 您的过滤选项是什么?如果没有,那么你必须进行全表扫描。

对于每个组件,例如你需要的年龄,性别等 (a)确定距离度量 (b)确定如何计算度量和不同记录之间的距离。

我不确定Levenshtein会在这里工作 - 你需要分别拿出每个领域来找到他们对整个距离测量的贡献。