这是一个更复杂的后续问题:查找连续值的有效方法 https://stackoverflow.com/questions/8011330/efficient-way-to-look-up-sequential-values
Each Product可以有很多Segment行(千)。每个段都有position每个产品从 1 开始的列(1、2、3、4、5 等)和value可以包含任何值的列,例如(323.113、5423.231、873.42、422.64、763.1 等)。数据是只读的。
将产品视为一首歌,将片段视为歌曲中的一组音符可能会有所帮助。
给定一个连续片段的子集,例如歌曲的片段,我想识别产品的潜在匹配项。然而,由于测量中的潜在误差,子集中的片段可能not匹配数据库中的段exactly.
如何通过查找产品细分来识别候选产品最接近匹配我测量的细分的子集?另外,数据库是此类数据的最佳媒介吗?
-
以下是我如何解决这个问题的一些想法。请不要将这些视为确切的要求。我对任何类型的算法都持开放态度,以使这项工作尽可能最好。我认为需要有多个阈值变量来确定接近度。一种可能性可能是实施接近阈值和match临界点。
例如,给定这些值:
Product A contains these segments: 11,21,13,13,15.
Measurement 1 has captured: 20,14,14,15.
Measurement 2 has captured: 11,21,78,13.
Measurement 3 has captured: 15,13,21,13,11.
If a 接近阈值允许测量段比实际段高或低 1,则测量 1 可能与产品 A 匹配,因为尽管许多段不匹配exactly,它们在相对于实际值的接近阈值内。
If a match阈值允许具有 3 个或更多匹配的测量,测量 2 可能会返回产品 A,因为尽管其中一个段 (78) 远远超过邻近阈值,但它仍然以正确的顺序匹配 3 个段,因此在match临界点。
测量 3 与产品 A 不匹配,因为尽管所有测量的段都存在于实际段中,但它们不在接近度或匹配阈值内。
Update:其中一个答案要求我定义我的意思最接近匹配。我不太确定如何回答这个问题,但我会尝试通过继续歌曲的类比来解释。假设这些片段代表录制歌曲的最大频率。如果我再次录制同一首歌,它会是相似的,但由于背景噪音和录音设备的其他限制,一些频率会匹配,一些会接近,还有一些会相差很远。在这种情况下,您如何定义一个录音与另一个录音“匹配”的时间?这与我在这个问题中寻找使用的匹配逻辑相同。