我有一个包含不同文章的网站。数据库结构是这样的:
文章编号 | 文章位置 | 文章分类 | 文章主题
列的实际文本字符串位于另一个表中,因此所有列都填充有数字(整数)
我想查找相关帖子,这意味着如果用户阅读 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
相关值。