是否可以为基于字符串/ uuid的主键创建索引,以便能够通过相似性例如嘈杂的uuid快速搜索?

问题描述

我将给出更好的理解的具体案例。 我有一些代码称为OUID,来自OCR。

从25个字符中,有几个被误认。 是否可以通过sql数据库中的UUID列“通过相似性编制索引”?

假设每个UUID只有一个字符是错误的,并且我执行25个查询,那么SELECT ... LIKE语句是否已经具有良好的行为?

[嘈杂的uuid不会被插入,只是被选择。]

解决方法

对不起,我不知道是否有内置函数可以执行此操作,但是您要尝试的是一种称为Levenshtein距离的算法。看看:

定义: https://en.wikipedia.org/wiki/Levenshtein_distance#:~:text=Informally%2C%20the%20Levenshtein%20distance%20between,considered%20this%20distance%20in%201965

使用SQL: https://lucidar.me/en/web-dev/levenshtein-distance-in-mysql/#:~:text=Informally%2C%20the%20Levenshtein%20distance%20between,not%20match%20exactly%20the%20fields

,

您应该修复进入数据库的数据-或至少具有原始代码和估算代码。

如果您需要保留原始代码,那么我的建议是查找包含原始代码和估算代码的表。该表将用于要按实际代码过滤的查询。

举一个具体的例子,如果我有一列带有美国州缩写的列,并且其中一个代码是RA,那么我不想“自动”找出是否是这样的:

  • 后退(阿肯色州)
  • RI(罗德岛州)
  • CA(加利福尼亚)
  • MA(马萨诸塞州)
  • 宾夕法尼亚州(宾夕法尼亚州)
  • 弗吉尼亚州(弗吉尼亚州)
  • 华盛顿(华盛顿)

似乎需要手动操作。