使用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)
);
答案 0 :(得分:0)
帖子相关性是一个很大的研究领域,没有很好的和智能解决方案 您可以为标签匹配分配每个帖子+0.1点,为类别匹配分配+0.4。 稍后您也可以考虑发布内容。 然后你可以按这个值排序。
这不是你在1 sql查询中可以轻松完成的事情。
答案 1 :(得分:0)
SQL用于数据检索,对于根据客观标准检索数据非常有用,其中有正确或错误的答案。没有客观衡量什么使帖子成为“相关帖子”,因此不能单独使用SQL来实现这一点。
Document clustering,这意味着对相关文档进行分组,是一个庞大而活跃的研究领域,因此这是一个很好的起点,但是自己实施一些东西将非常困难。根据您使用的语言,您可能会查看群集库。例如,如果您正在使用Java(或在JVM上运行的任何内容,或者您可以设置Web服务来执行群集),则可以使用Weka来查看。