2010-08-29 37 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來查看。