如何使用PHP和MySQL获取相关帖子

时间:2010-08-29 02:36:18

标签: php mysql

使用PHP和MySQL获取相关帖子的最佳方法是什么?第二个问题是如何通过比较每个帖子中的标签和类别来获得前5个相关帖子。我的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)
);

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

SQL用于数据检索,对于根据客观标准检索数据非常有用,其中有正确或错误的答案。没有客观衡量什么使帖子成为“相关帖子”,因此不能单独使用SQL来实现这一点。

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