PHP MySql - SELECT where similar_text()>x


PHP MySql - SELECT where similar_text()>x

我有两个表,称为reference和list。两者都有两个字段:id和name。

reference:
ref_id, ref_name
1, john
2, georges
etc...
list:
lst_id, lst_name
1, steward
2, james
3, john
4, jones
5, georges
etc...

我想从similar_text()>60的两个表中选择名称。下面是我想要的输出:

ref_name, lst_name, similar_text()
john, john, 100
john, jones, 67
georges, georges, 100

请注意,由于similar_text()低于60,所以应该忽略管家和詹姆斯。

希望有人能帮忙。提前感谢您的信赖。干杯马克。哦,顺便说一句,我愿意接受更好的解决方案来实现我的目标。。。

您很可能需要在mysql中使用levenstein。这将允许您计算字符串中的差异。

然后你可以做一些类似的事情:

SELECT ref_name, lst_name, LEVENSHTEIN_RATIO( ref_name, lst_name ) as textDiff
FROM reference, list
HAVING textDiff > 60;

或者类似的东西。

注意:在处理大型数据集时,肯定会出现性能问题。

要使用similar_text,您需要交叉连接两个表,获得结果的数组,并在结果数组中使用similal_text函数。如果您这样做,您可以将结果保存在第三个辅助表中。

但是,您可以使用MySQL的本机函数SOUNDEX(),这将起作用,或者创建一个Levehnstein函数。