2011-11-06 135 views
2

我正在製作具有由用戶創建標籤的特定帖子的網站。我的數據庫看起來像這樣:查找相關標籤

 
Qid    Tag 
3    Happy 
3    Sad 
3    Funny 
6    Happy 
6    Delicious 
8    Angry 

我想要做的是找到相關標籤。

我的計劃是進入一個標記爲關鍵(比如Happy例如),然後出來SadFunny,並Delicious

但我只想要一個最大比如5或6

在真實的數據庫,有萬噸以上這些條目,但我不知道怎麼的前5或6

之間選擇

我的問題是:

  1. 我會怎麼做查詢正確,只是拿出所有相關的標籤?
  2. 我如何將最佳搜索結果縮小到5或6?
  3. 有沒有更好的方法來做相關的標籤,我沒有想到(例如,字典)?

順便說一下,它是在PHP中,所以我也可以在那裏做後期處理。

+0

標籤是否由您預先定義的用戶選擇,因爲他們有一個選項,而不是免費的統治?如果不是,你將如何確定哪些(用戶創建的)標籤彼此相關? –

+0

我的標籤是免費的。我通過獲取標籤以及帖子中的原始標籤來確定關係。 – Robert

+0

而'原創'標籤是強制性的? –

回答

1

批准一般回答你的問題......

  1. 你需要找到標籤的QID,然後選擇與QID所有標籤 - 當然,你如何保存這個要看,在您的數據庫中發佈元數據

  2. 如果通過'最佳搜索結果'表示最常用的標籤,那麼您需要在表格中添加另一列 - 類似頻率。然後,每次使用標籤時都要增加一個。但是,要找到前五名基於這樣的假設,你會做這樣的事情:

    SELECT * FROM tag_table 
    WHERE qid = 3   /* Where 3 is just an example      */ 
    ORDER BY frequency DESC /* so the most used are at the top of the results */ 
    LIMIT 5;     /* select only the first five results    */ 
    
  3. 我不知道這將是一個更好的辦法,是誠實的。沒有任何進一步的信息,很難知道。

+0

好吧謝謝,我知道你在得到什麼。 – Robert