2010-10-18 116 views
0

IM試圖找出如何找到用mysql & PHP相關主題的項目,這是我的主題表使用mysql查找相關項目?

topics{id, topic, founder,vote_up, vote_down date} 

例如說,我的php

topic {3,php,getaway, 6, 8, 20.06.2009 ect] 

怎麼會主題頁面上我找到這個話題的所有相關主題

+3

你必須定義什麼它的意思是「相關的」爲您的網站 – Galen 2010-10-18 20:39:19

+0

是,你實際上是在文中談到通過什麼realted,還是我們談論的分貝的關係? – prodigitalson 2010-10-18 20:41:07

回答

1

我不知道爲什麼我不能對別人的答案評所以請原諒這個「答案」

「我忘了補充一點,每一個話題,有關於他們一點點的生物,像約200款字符說這個話題是關於什麼的,這是不是將對象與對方聯繫起來的好方法?「

這是一種非常不可靠的方式來關聯任何東西。如果是這樣,幾乎所有的東西都會關聯起來,因爲每個主題都會出現常見的詞語。像「the」或「and」這樣的詞會像全文搜索那樣將所有內容都聯繫起來,具體取決於您如何編排比較。

在你的情況,你可能想澄清你怎麼打算的比較。你已經提到你使用的是PHP和MySQL,所以我們都假設你正在編寫一個查詢來查找關係。 爲什麼然後你避免關係表?關鍵字表?這是目前基本的Web開發,看起來很奇怪,你會對一個非常簡單的概念的複雜工作感興趣。

博客{ID,標題身體,日期} 話題{ID,標題} blog_topic {ID,blog_id,topic_id}

$sql = "SELECT b.*, t.* FROM `blogs` b LEFT JOIN `blog_topic` r ON r.`blog_id` = b.`id` LEFT JOIN `topic` t ON t.`id` = r.`topic_id` WHERE t.`id` = ".$whatever_topic_id_you_pass; 

在我看來,很簡單。比一些奇怪的全文搜索更可靠。

1

這取決於你的相關定義。一種方法是進行全文搜索,查找主題的標題,並使用mysql's functions或更高版本,Sphinx或Lucene顯示最佳結果。

1

您需要定義相關性對於您的域的含義。一種天真的方式是將相關主題的標題標記爲單詞(在本例中爲「php」),並進行全文搜索以找到具有類似文章的其他主題。然後結合並呈現。

+0

我忘了補充一點,每個主題都有一些關於它們的簡介,比如200個字符的「about」段落,說明這個主題是關於什麼的,這是否是互相聯繫的好方法?:))謝謝 – getaway 2010-10-18 20:43:45

1

我經常使用REGEXP搜索在MySQL通配符類型的搜索。但這聽起來像是一個相當複雜的提供相關物品的系統,這當然不是一個神奇的子彈。

通常,分類系統是建立在數據庫中進行比較的目的。由於電腦並不神奇,他們需要提供信息進行比較。在這種情況下,您可以定義類別或關鍵字,然後使用查詢來調出包含這些關鍵字或類別定義的項目。那麼挑戰是如何種植這些類別?

+0

感謝您的答案:)),我真的不想要一個類別系統或標籤問題在這裏,如果每個主題都有一些關於段落解釋主題是什麼,然後看看是否有任何相關的主題? :)) – getaway 2010-10-18 20:46:12