基本的PHP搜索(引擎)脚本

时间:2012-06-07 18:34:50

标签: php search-engine

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

例如,如果数组中包含字符串“Tom and Jerry”,我想返回true:“Tom Jerry”,“Tom& Jerry”,甚至可能是“Tom and Jery”。我找到了PHP搜索引擎的链接,它们更复杂,而不是我真正需要的东西。我的数据相当小且动态,所以没有索引。

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

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

3 个答案:

答案 0 :(得分:1)

如果数据在MySQL中,您可以使用full text search。这很容易开发;问题是:解决方案的重量太大了吗?

答案 1 :(得分:1)

可能需要一些反复试验,但您可以这样做:

  • 制作可能缺席的单词的手动列表,例如'和','in','of'等等(例如在您的Tom Jerry示例中)。
  • 计算字符串和搜索查询之间的Hamming distance。如果它很低(可能最多只有一两个),则返回true。
  • 否则,返回false。

答案 2 :(得分:0)

我刚刚发现了两个看起来像我想要的功能:

similar_text()

levenshtein()

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

我的搜索得到this S.O. question的帮助。