2010-08-29 88 views
0

使用PHP和MySQL获取相关文章的最佳方式是什么?第二个问题是,如何通过比较来自每个帖子的标签和类别来获得排名前5的相关帖子。下面列出了我的MySql表。如何使用PHP和MySQL获取相关文章

CREATE TABLE categories ( 
id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
parent_id INT UNSIGNED NOT NULL DEFAULT 0, 
category VARCHAR(255) NOT NULL, 
url VARCHAR(255) NOT NULL, 
PRIMARY KEY (id), 
INDEX parent (parent_id), 
UNIQUE KEY(parent_id, url) 
); 

CREATE TABLE posts_tags (
id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
tag_id INT UNSIGNED NOT NULL, 
users_posts_id INT UNSIGNED NOT NULL, 
PRIMARY KEY (id) 
); 

CREATE TABLE tags (
id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
tag VARCHAR(255) NOT NULL, 
PRIMARY KEY (id) 
); 


CREATE TABLE users_posts (
id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
user_id INT UNSIGNED NOT NULL, 
title TEXT NOT NULL, 
posts_content LONGTEXT NOT NULL, 
PRIMARY KEY (id) 
); 
+0

** 1)**你如何确定相关帖子? ** 2)**前5名基于什么?您列出了“类别”表格,但与列出的其他表格没有关系... – 2010-08-29 02:41:48

+0

@OMG Ponies然后我将如何确定相关帖子。 – sadder 2010-08-29 02:44:49

回答

0

发布相关性是一个很大的研究领域,没有漂亮的&智能解决方案。 您可以为每个帖子分配+0.1分的标签匹配,+0.4分类匹配。 稍后,您也可以考虑发布内容。 然后您可以按此值排序。

这不是你可以在1个sql查询中轻松完成的事情。

0

SQL用于数据检索,对于根据客观标准检索数据非常有用,其中存在正确或错误的答案。没有任何客观的方法来衡量是什么让帖子成为“相关帖子”,所以它不是你可以单独用SQL有效完成的事情。

Document clustering这意味着对相关文档进行分组是一个大型且活跃的研究领域,因此这是一个很好的开始的地方,但是自己实施一些东西将会非常困难。根据您使用的语言,您可以查看群集库。例如,如果您使用的是Java(或任何在JVM上运行的程序,或者您可以设置Web服务来执行群集),则可以使用Weka来查看。