我正在环顾四周,并想知道我将如何使用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
| 归档时间: |
|
| 查看次数: |
11461 次 |
| 最近记录: |