我的数据库中有一个字符串表。我选择其中一个, A 。
如何搜索表格的其余部分以找到与 A 最相似的字符串?
答案 0 :(得分:3)
我认为你正在寻找levenshtein距离。 De levenshtein在2个字符串之间的距离,是需要多少添加/删除/修改字符串才能使字符串等于。
答案 1 :(得分:0)
如果您正在使用两个字符串之间的语音相似性,则可以使用SQL soundex函数(Oracle中也有metaphone)。
这会将传递给它的字符串转换为4位代码(1个字母,3个数字iirc),代表单词的语音。
如果对要比较的两个字符串执行此操作,如果它们在语音上相似,则可以匹配代码。
答案 2 :(得分:0)
以下是Ruby中Levenshtein距离算法的简单实现:
def levenshtein(a, b)
case
when a.empty?: b.length
when b.empty?: a.length
else [(a[0] == b[0] ? 0 : 1) + levenshtein(a[1..-1], b[1..-1]),
1 + levenshtein(a[1..-1], b),
1 + levenshtein(a, b[1..-1])].min
end
end
两个字符串之间的Levenshtein距离由将一个字符串转换为另一个字符串所需的最小操作数给出,其中操作是单个字符的插入,删除或替换。