我正在使用MYSQL的全文搜索功能(在Mysql 5.6.33中)。
如果我在自然语言模式下进行匹配,对于邮政编码为一个字符的错字,我会得到一些不错的结果,包括带有“正确”邮政编码的结果,但它们不在顶部。
例如,有10所学校的邮政编码为"BN2 1TL"
。我故意将其拼写为"BN2 1TM"
,并进行如下搜索:
SELECT record_id, address_string,
MATCH (address_string) AGAINST ("BN2 1TM" IN NATURAL LANGUAGE MODE) AS score
FROM schools
WHERE MATCH (address_string) AGAINST ("BN2 1TM" IN NATURAL LANGUAGE MODE) > 0
ORDER BY score DESC;
仔细检查,是因为搜索回购了"BN2"
列中包含"1TM"
或address_string
的所有结果,并且它们的得分完全相同,因此有效地处于随机顺序。
这是完全合理的行为,但是如果我能将分数考虑到“亲密性”,那就太好了,这意味着,对于"BN2 1TM"
的搜索,"BN2 1TL"
的得分会更高比"BN2 3PQ"
高。有没有办法做到这一点?
编辑:我记得这种紧密度在技术上被称为“ Levenshtein距离”,它是对Levenshtein algorithm的引用,用于确定将一个字符串转换为多少字符串所需的替换次数另一个。所以我想我的问题可能是“我可以获取MYSQL FULLTEXT自然语言模式评分以考虑Levenshtein距离”吗?