我一直在寻找SO,并且想知道如何使用PHP和MySQL创建相关或相似的帖子以显示在我的网站上?如何执行此操作的基本示例是什么?
使用MySQL全文搜索的MATCH (col1,col2,...) AGAINST (expr [search_modifier])东西。
MATCH (col1,col2,...) AGAINST (expr [search_modifier])
假设您的表格是articles,您需要查找有关当前职位标题的相关职位。像这样做:
articles
SELECT *, MATCH(title, body) AGAINST('$CurrentPostTitle') AS score FROM articles WHERE MATCH(title, body) AGAINST('$CurrentPostTitle') ORDER BY score DESC LIMIT 5
这将为您提供前5条相关的帖子。
但是首先请记住通过运行以下查询为该表的列启用全文搜索:
ALTER TABLE articles ADD FULLTEXT (title, body);
[编辑]:为什么不使用 LIKE :对OP的说明:
LIKE
因为它不会给出正确的结果。假设您当前的标题是“ 1980年的音乐”,并且您想要与此相关的文章。现在,如果您使用的是,LIKE则仅会显示包含“ Music of 1980”一词的序列的帖子。但是,如果使用MATCH ... AGAINST,则将出现包含Music OR 1980的帖子。另外,同时包含Music和1980的帖子将出现在Top上,因为它给SCORE每个结果都给出一个`` a’‘ ,我们正在按该分数排序。我希望这很清楚。
MATCH ... AGAINST
SCORE
[编辑]:2 :
如果您有类别,则可以添加AND Category = '$CurrentCategory'SQL查询where clause以获得更具体的结果。
AND Category = '$CurrentCategory'
where clause
[编辑]:3:OP无法使用全文 :
如果由于某种原因不能使用全文,则可以只显示5个来自同一类别的随机信息。由于它们属于同一类别,因此它们至少在某种程度上相关:
SELECT * FROM articles WHERE Category = '$CurrentCategory' LIMIT 5
编辑语法:在MySQL代码中将LIMTI更改为LIMIT