我需要一种方法来找出两个数组之间的最佳匹配。
数组
数组
a
包含产品名称,数组b
也是同样的产品,但名称可能略有不同。a = [
"F542521376-34-REG",
"AF7U",
"AF106U",
"F521521376-30R"
]
b = [
"F54252137634R",
"AF7U",
"AF106U",
"F52152137630R"
]
最佳匹配:
"F542521376-34-REG" - "F54252137634R"
"AF7U" - "AF7U"
"AF106U" - "AF106U"
"F521521376-30R" - "F52152137630R"
或者:
a[0] - b[0]
a[1] - b[1]
a[2] - b[2]
a[3] - b[3]
(在列表中,第一个和最后一个元素是不同的。)
我可以使用模糊字符串匹配算法来获取字符串相似度的数值(0.0-1.0)。但仅靠这个并不能让我获得最佳的列表元素匹配。我没有找到适合此需求的算法,也不想采用蛮力方法。
实际应用场景是,我有一些中间层 Ruby 代码,用于在两个第三方系统之间传输信息,而数据质量却是参差不齐的。我需要匹配这些元素以创建查找表。产品名称的格式和变异是无法预测的。