使用MySQL全文搜索
MATCH (col1,col2,...) AGAINST (expr [search_modifier])的东西.
假设你的桌子是文章,你需要找到有关当前帖子标题的相关帖子.像这样做:
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:
因为它不会给出正确的结果.让我们说你现在的标题是“1980年音乐”,你想要相关的帖子.现在,如果你使用LIKE,那么只会显示包含“1980年音乐”字样序列的帖子.但是,如果您使用MATCH … AGAINST,则会显示包含Music或1980的帖子.此外,包含音乐和1980的帖子将显示在Top上,因为它为每个结果提供了分数,我们按照该分数进行排序.我希望很清楚.
[编辑]:2:
如果您有类别,可以在SQL查询where子句中添加AND Category =’$CurrentCategory’,以获得更具体的结果.
[编辑]:3:OP不能使用全文:
如果您不能使用全文(由于某种原因),您只能显示来自同一类别的5个随机帖子.由于它们属于同一类别,它们至少在某种程度上相关:
SELECT *
FROM articles
WHERE Category = '$CurrentCategory'
LIMIT 5
已编辑语法:将LIMTI更改为LIMIT(在MySQL代码中)