相关疑难解决方法(0)

为mysql /模糊搜索实现Levenshtein距离?

我希望能够按照以下方式搜索一个表格,因为它可以获得1个方差范围内的所有内容.

数据:

O'Brien
Smithe
Dolan
Smuth
Wong
Smoth
Gunther
Smiht

我已经研究过使用Levenshtein距离有没有人知道如何实现它?

mysql database algorithm search levenshtein-distance

44
推荐指数
4
解决办法
4万
查看次数

levenshtein替代方案

我有一大堆查询并使用levenshtein计算拼写错误,现在levenshtein导致mysql占用完整的cpu时间.我的查询是UNION语句中的全文搜索+ levenshtein.sql1是我当前的查询,sql2只是全文搜索,这是快速的,并没有使用太多的CPU时间,最后一个leventhein一个将达到峰值!

你们中的任何人都有另一种方式来获取拼写错误吗?请不要回答规范化数据,我已经想到了,但不适用于我的数据,因为我不能预先进行匹配/计算并创建一个带索引的单独表.

            $sql1 = "(SELECT * FROM ci_sanctions_properties WHERE prop_type='LASTNAME' AND prop_value!='' AND MATCH(prop_value) AGAINST ('+usama bin laden' IN BOOLEAN MODE)) UNION (SELECT s.* FROM (SELECT levenshtein(prop_value, 'usama bin laden') AS dist, sanction_id, prop_type, prop_value FROM ci_sanctions_properties WHERE prop_type='LASTNAME' AND prop_value!='') s WHERE dist < 3) ORDER BY sanction_id";

        $sql2 = "SELECT * FROM ci_sanctions_properties WHERE prop_type='LASTNAME' AND prop_value!='' AND MATCH(prop_value) AGAINST ('+usama bin laden' IN BOOLEAN MODE) ORDER BY sanction_id";

        $sql3 = "SELECT s.* FROM (SELECT levenshtein(prop_value, 'usama …
Run Code Online (Sandbox Code Playgroud)

mysql levenshtein-distance

6
推荐指数
1
解决办法
1717
查看次数