0

我的 PHP 脚本需要检查整个数据数组中的匹配项。它目前正在寻找精确的字符串匹配。我希望它不那么严格。

例如,如果数组包含字符串“Tom and Jerry”,我想为“Tom and Jerry”、“Tom & Jerry”甚至“Tom and Jerry”返回true。我发现 PHP 搜索引擎的链接更复杂,并不是我真正需要的。我的数据相当小而且动态,所以没有索引。

我知道我可以写一个毛茸茸的正则表达式,但我很确定我会重新发明轮子,因为我确信其他人已经这样做了。任何关于在哪里寻找或如何解决这个问题的建议将不胜感激。

编辑:为了澄清,我试图避免将所有动态生成的数据输入数据库。

4

3 回答 3

1

如果数据在 MySQL 中,您可以使用全文搜索。这很容易开发;问题是:这样的解决方案会不会太重?

于 2012-06-07T18:36:26.873 回答
1

它可能需要一些试验和错误,但你可以这样做:

  • 手动列出可能不存在的单词,例如“and”、“in”、“of”等(例如在您的Tom Jerry示例中)。
  • 计算字符串和搜索查询之间的汉明距离。如果它很低(可能最多一两个),则返回 true。
  • 否则,返回假。
于 2012-06-07T19:04:15.657 回答
0

我刚刚发现了两个似乎可以满足我要求的功能:

similar_text()

levenshtein()

两者似乎都返回一个表示两个字符串之间匹配“接近度”的整数。两者之间的差异超出了我的想象。

我的搜索得到了这个 SO question的帮助。

于 2012-06-07T19:27:12.037 回答