我正在开发一个系统,用户可以使用相应的成分创建自己的个人食谱并保存它们(在 mysql 中)。
问题是每次保存一种成分时,我都会检查它是否已经存在于我比较成分名称的成分表中。
如果我应该能够从食谱中正确制作购物清单,我想确保例如:
苹果 - 苹果 - 新鲜苹果 Cant aear
因此,如果首先创建“苹果”并且我试图保存“苹果”,我想检查类似的东西是否已经存在。
像我试图解释的那样的算法是否已经存在?
希望你有一些意见!
您可能对 MySQL 的功能有一些运气SOUNDEX()
,假设这些词足够相似并且可能足够简单。
文档可以在这里找到:https ://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_soundex
基本上,它所做的是将给定的单词简化为表示它的四个字符串。对于任何两个听起来大致相同的单词,字符串应该相同。
虽然可以使用soundex或Levenshtein distance,但它仍然需要在短语中找到关键词——“apple”和“apples”可能会起作用,但“dozen of fresh apples”可能不会。
根据我的经验,在该应用程序中,没有什么比手动算法更好的了:
在 mySql 中,您可以使用SOUNDEX()
函数soundex。
如果你想在 php 中实现它,有levenshtein和similar_text函数