问题:
MySQL 中有两个字符串,需要确定它们的值相似度百分比。例如,给定字符串“@a = 'Welcome to Stack Overflow'”和“@b = 'Hello to stack Overflow'”,您想要找到它们之间的相似性。
解决方案:
创建编辑距离函数:
使用以下函数计算两个字符串之间的编辑距离:
CREATE FUNCTION `levenshtein`(s1 text, s2 text) RETURNS int(11) DETERMINISTIC BEGIN ... END
上述函数改编自提供的函数http://www.artfulsoftware.com/infotree/queries.php#552.
创建 Levenshtein 相似度函数:
至将 Levenshtein 距离转换为相似度,使用这个函数:
CREATE FUNCTION `levenshtein_ratio`( s1 text, s2 text ) RETURNS int(11) DETERMINISTIC BEGIN ... END
用法:
要计算两个字符串之间的相似度百分比,请使用以下公式:
similarity_percentage = ((1 - LEVENSHTEIN(s1, s2) / MAX_LENGTH) * 100)
示例:
SELECT levenshtein_ratio('Welcome to Stack Overflow', 'Hello to stack overflow') AS similarity;
这个查询将返回两个字符串之间的相似度百分比,在本例中为 66%。
以上是MySQL中如何计算字符串相似度百分比?的详细内容。更多信息请关注PHP中文网其他相关文章!