2013-02-27 57 views
0

我正在开发一个系统,用户可以使用相应的成分创建自己的pesonal食谱并保存它们(在mysql中)。在mysql中检查大致相等字符串的脚本

问题是,每次一个成分被保存,我检查它是否已经存在于成分表中,我比较成分的名称。

如果我应该能够从我想确保例如食谱做出正确的购物清单:

苹果 - 苹果 - 新鲜的苹果 广东话apear

所以,如果“苹果”首先是创建和即时尝试保存“苹果”我想检查类似的东西已经存在。

像什么即时尝试解释的alghorithm已经存在吗?

希望你有一些意见!

回答

0

虽然可以使用soundexLevenshtein distance,但它仍然需要找到该短语中的关键词 - 可能有苹果和苹果,但可能有效,但可能含有“十几个新鲜苹果” - 可能不会。

从我的经验,在该应用程序没有什么比更多的手动算法:

  • 创造成分的基地列表(“面粉”,“苹果”,“火腿”)
  • 增加新的配方时,使用Levenshtein或正则表达式匹配成分列表,可能允许使用Levenshtein或正则表达式模糊一些
  • 使用列表“原始”与“匹配”创建后端页面创建一个简单的界面来进行手动匹配对于不好的命中
+0

我要检查Levenshtein。我想我会制作一个后端系统,就像你在说我可以标记那些错误的匹配。 – 2013-02-27 10:44:27

+0

感谢您的回答 – 2013-02-27 13:57:51

0

假设这些单词足够相似并且可能足够简单,那么您可能会对MySQL的SOUNDEX()函数有一些好运。

文档可以在这里找到:https://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_soundex

基本上,它是一个给定的单词减少它代表一个四个字符的字符串。字符串应该与的声音基本相同的任何两个单词相同。

+0

我要去检查出立即 – 2013-02-27 10:36:40

+0

刚刚更新了更详细一点的答案......我希望它能帮助! – Dan 2013-02-27 10:38:08

+0

我认为这个功能现在可以解决我的问题。谢谢你 – 2013-02-27 10:41:56