微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

搜索最佳匹配比较前缀

如何解决搜索最佳匹配比较前缀

我在下面的 numbers codes 中有 text codestable1。我在 numbers to search 中有 table2 为此,我想获得从左到右比较的 prefix of minimun length of 3 的最佳匹配,并将相应的 TEXT CODE 显示为答案。

  • 如果有完全匹配,那就是答案。
  • 如果没有任何具有至少 3 个长度前缀的值,那么答案将是“未找到”。

我展示了一些注释,解释了 table2 旁边的每个 Number to search 预期答案中所应用的条件。

enter image description here

我当前的尝试显示了完全匹配,但我不确定如何在没有完全匹配的情况下比较这些值以搜索其他条件。

ncode = ["88271","1893","107728","4482","3527","71290","404","5081","7129","33751","3","40489","107724"]
tcode = ["RI","NE","JH","XT","LF","RI","QS","YU","WE","RP"]
tosearch = ["50923","712902","10772"]

out = []
out.append([])
out.append([])

for code in tosearch:
    for nc in ncode:
        if code == nc:
            indexOfMatched = ncode.index(nc)
            out[0].append(nc)
            out[1].append(tcode[indexOfMatched])

>>> out
[['404'],['RI']]

预期的输出

out = [
        ['50923','712902','404','10772'],['NOT FOUND','NE','RI','JH'   ]
      ] 

解决方法

您可能考虑的一个简单解决方案是模糊匹配库。它比较字符串并计算相似度分数。它确实适用于字符串而不是数字,但它可以很容易地应用于在前缀数字中找到类似的结果。

查看fuzzy-match here

这是一个写得很好的fuzzy-match tutorial

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。