我有一个不同文章的网站。数据库结构如下:
ArticleId | ArticleLocation | ArticleCategory | ArticleTopic
列的实际文本字符串位于另一个表中,因此所有列都填充了数字(整数)
我想查找相关帖子,这意味着如果用户阅读ArticleLocation = 1,ArticleCategory = 3和ArticleTopic = 2的文章,那么我想找到共享大部分相同列值的前5篇文章。
关于如何做到这一点的任何想法?
提前致谢
答案 0 :(得分:0)
假设该表名为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
设置为相关值。