使用PHP和MySQL创建相关或类似的帖子

lef*_*out 16 php mysql

我正在环顾四周,并想知道我将如何使用PHP和MySQL在我的网站上创建相关或类似的帖子?如何做到这一点的基本例子是什么?

sha*_*mar 34

使用MySQL全文搜索的MATCH (col1,col2,...) AGAINST (expr [search_modifier])东西.

假设你的桌子是articles,你需要找到关于当前帖子标题的相关帖子.像这样做:

SELECT *, MATCH(title, body) AGAINST('$CurrentPostTitle') AS score
FROM articles 
WHERE MATCH(title, body) AGAINST('$CurrentPostTitle') 
ORDER BY score DESC LIMIT 5
Run Code Online (Sandbox Code Playgroud)

这将为您提供前5个相关帖子.

但首先要记住通过运行此查询来启用该表的列的全文搜索:

ALTER TABLE articles ADD FULLTEXT (title, body);
Run Code Online (Sandbox Code Playgroud)

[编辑]:为什么不使用LIKE:对OP的澄清:

因为它不会给出正确的结果.让我们说你现在的标题是"1980年的音乐",你想要相关的帖子.现在,如果您使用,LIKE那么只会显示包含"1980年音乐"字样序列的帖子.但是,如果您使用MATCH ... AGAINST,则会显示包含Music OR 1980的帖子.此外,包含Music和1980的帖子将出现在Top上,因为它给出了SCORE每个结果,我们按照该分数进行排序.我希望这很清楚.

[编辑]:2:

如果您有类别,则可以添加AND Category = '$CurrentCategory'SQL查询where clause以获得更具体的结果.

[编辑]:3:OP无法使用全文:

如果您不能使用全文(出于某种原因),您只需显示同一类别中的5个随机帖子.由于它们属于同一类别,因此它们至少在某种程度上相关:

SELECT *
FROM articles 
WHERE Category = '$CurrentCategory'
LIMIT 5
Run Code Online (Sandbox Code Playgroud)

编辑语法:在MySQL代码中将LIMTI更改为LIMIT