Php 找到相关的帖子并根据相关性进行排名

Php 找到相关的帖子并根据相关性进行排名,php,sql,Php,Sql,我有一个不同的文章网站。数据库结构如下所示: ArticleId | ArticleLocation | ArticleCategory | ArticleTopic 列的实际文本字符串位于另一个表中,因此所有列都用数字(整数)填充 我想找到相关的帖子,也就是说,如果用户阅读了ArticleLocation=1、ArticleCategory=3和ArticleTopic=2的文章,那么我想找到前5篇文章中共享了大部分相同的列值 你知道怎么做吗 提前感谢假设表名为ArticleTable,请尝试

我有一个不同的文章网站。数据库结构如下所示:

ArticleId | ArticleLocation | ArticleCategory | ArticleTopic

列的实际文本字符串位于另一个表中,因此所有列都用数字(整数)填充

我想找到相关的帖子,也就是说,如果用户阅读了ArticleLocation=1、ArticleCategory=3和ArticleTopic=2的文章,那么我想找到前5篇文章中共享了大部分相同的列值

你知道怎么做吗


提前感谢

假设表名为
ArticleTable
,请尝试以下操作:

SELECT *, (
CASE ArticleLocation WHEN :loc THEN 1 ELSE 0 END +
CASE ArticleTopic WHEN :topic THEN 1 ELSE 0 END +
CASE ArticleCategory WHEN :cat THEN 1 ELSE 0 END) AS Relevance
FROM ArticleTable 
ORDER BY Relevance DESC
LIMIT 5

:loc
:topic
:cat
设置为相关值。

大部分相同=完全相同?您使用的是什么CMS?从数据库中选择ArticleLocation=1、ArticleCategory=3和ArticleTopic=2应该不会太难?不,不完全一样。假设有一篇文章共有3列值,一列值为2,另一列值为1。伪代码:从DBName中选择,其中ArticleLocation=1或ArticleCategory=3或ArticleTopic=2,按[顶部完成了大多数“或”语句的帖子]的顺序排列。非常感谢:)正是我所需要的