查找相关帖子并按相关性对其进行排名

时间:2013-03-28 08:36:17

标签: php sql

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

ArticleId | ArticleLocation | ArticleCategory | ArticleTopic

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

我想查找相关帖子,这意味着如果用户阅读ArticleLocation = 1,ArticleCategory = 3和ArticleTopic = 2的文章,那么我想找到共享大部分相同列值的前5篇文章。

关于如何做到这一点的任何想法?

提前致谢

1 个答案:

答案 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设置为相关值。