需要一个PHP MySQL脚本来搜索数据库中的关键字

时间:2011-05-17 12:58:37

标签: php mysql search

我需要为存储在MySQL数据库中的用户注释实现搜索选项。我最喜欢它以类似于标准网页搜索引擎的方式工作,但我试图避免大规模的解决方案。我想了解一下能给我带来不错结果的查询。有什么建议?感谢。

2 个答案:

答案 0 :(得分:5)

可以通过一些简单的步骤创建完整的索引解决方案。您可以创建一个将单词映射到每个帖子的表格,然后当您搜索某些单词时查找匹配的所有帖子。

这是一个简短的算法:

  1. 发布评论时,将字符串转换为小写并将其拆分为单词(拆分为空格,以及可选的短划线/标点符号)。
  2. 在“单词”表中,每个单词都带有一个ID,如果它不在表中。 (在这里你可能希望忽略像'''或'for'这样的常用词。)
  3. 在“indexedwords”表格中,将您刚插入的字词的ID映射到评论的帖子ID(如果您想要返回,则为文章)。
  4. 搜索时,将搜索字词拆分为单词并查找包含每个字词的所有帖子。 (再次在这里你可能想忽略常用词。)
  5. 按出现次数排序结果。如果结果必须包含您需要找到不同帖子阵列的联合的所有单词。

答案 1 :(得分:2)

作为切入点,您可以使用MySQL LIKE查询。

例如,如果您有一个名为“comment”的列的“评论”表,并且您想查找包含“red”一词的所有评论,请使用:

SELECT comment FROM comments WHERE comment LIKE '% red %';

请注意,全文搜索可能很慢,因此如果您的数据库非常大或者您经常运行此查询,您将需要找到一个优化的解决方案,例如Sphinx(http://sphinxsearch.com)。