所以我在研究哈希函数,发现给定 2 个相似的字符串,即使有一位不同,结果也将是一个完全不同的哈希键。我实际上需要创建某种唯一的 id,它具有对于相似输入非常相似的功能(将是数百万个字母数字字符串)。
示例:
- 两个相等的字符串必须具有相同的哈希值。
- 两个不同的字符串必须具有不同的哈希值。
- 两个非常相似的不同字符串必须具有不同的哈希值,同时彼此相差不太远。
实现这一目标的好方法是什么?我正在使用Python。
最佳答案
你所要求的是不可能的,假设“相似散列”意味着这些值应该具有相似的大小 - 例如,12345 与 12346 相似,但与 92345 不同。这样做的原因是相似性该排序是一维的(数轴),但字符串彼此相似的方式没有固定的维度(例如,“foo”、“fob”和“fod”彼此之间的距离均为 1)。
如果您想执行模糊匹配,则需要使用不同的方法对文本进行索引,例如 this或this .
如果您只想比较各个值的相似性,首先不要对它们进行散列 - 只需立即计算它们的编辑距离即可。
关于python - 我需要一个函数,给定相似的输入返回相似的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7733713/