2010-11-17 65 views
6

我正在實現一個標籤系統類似於StackOverflow標籤系統,但我只是想知道如何獲取相關標籤和定義標籤之間的關係權重,如任何「相關標籤」列表中的任何像這樣的標籤頁https://stackoverflow.com/questions/tagged/php他們通過2個或更多標籤之間的共同出現來定義關係權重如何構建標籤系統像stackoverflow

我如何在PHP/MySQl中執行此操作來爲標籤「X」定義最相關的標籤並將所有權重保持爲用戶添加越來越多的帖子/問題的日期?

回答

2

你可能想看看統計數據如下:

  1. 給予標記X
  2. 檢查所有其他標籤Ÿ
  3. 計數X多久Y和顯示,同時
  4. 除以Y顯示的頻率
  5. ???
  6. 利潤!

至於步驟5的更多信息:這些信息只是變化很慢,所以你可以真正緩存這些東西,只有當你有時間時才能重新創建它。

你想到底是什麼關係

conditional_probability(X, Y, P) 

它告訴你如何可能(P)標籤Y的,給予X. p在步驟4計算

+5

我想你應該在第五步中更加明確。 ;) – Bobby 2010-11-17 07:43:12

+0

我會寫這個作爲一個SQL查詢,但看看這個網站上的問題的數量(因此,標記引用),我懷疑每次有人想問一個問題時,它會產生如此多的計數和組。畢竟,這些信息經常被讀取而不是被修改。 – AlexanderMP 2010-11-17 07:45:10

1

我用這個博客輸入calculating relative tag size within a cloud。你可以在整個可能或特定的發現集上使用這種算法。

代替存儲數據庫中所有標籤的非規格化權重,我將它們緩存在我的(Ruby)進程中,並在添加/刪除標籤或進程重新啓動時重建它們。

至於如何存放,一般希望:

  1. 一個標籤表相關聯與行ID唯一的標籤名稱,
  2. 一個tags_items表爲您提供您的N對N的映射標籤和項目。

一旦你的,一旦你有一個發現組項目的結果頁面上,這是一個簡單的加入和獨特找出一套「相關」標籤。

0

1每個帖子的ID可以被標記有一個或多個標籤(PHP +其他標籤)

2讓我們回到每個標籤都有相關的帖子ID

3的foreach帖子ID得到所有標籤等以同樣的方式比PHP

4只顯示那些具有數比prticular號碼以上(比如4000)

想想這個問題已經被標記爲「mysql的」,「數據庫設計」,「標籤」和「標記」做你會看到你如何將PHP與其他標籤相關聯。