MySQL全文搜索,自然语言模式:按“紧密度”排序

时间:2019-03-11 11:10:14

标签: mysql pattern-matching full-text-search levenshtein-distance

我正在使用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距离”吗?

0 个答案:

没有答案