2011-08-30 118 views
10

asked this question on meta,但我現在認識到,它可能是更適合的主要網站,因爲它是一個普遍的問題,將涉及任何基於標記的系統(我很高興關閉/刪除一個取決於人們認爲這個問題應該在哪裏去)什麼是標籤和標籤同義詞使用的數據模型?


我有一個類似標記的數據的系統和我遇到了同樣的問題SOF在哪裏我有很多是真正的同樣的事情標籤。我正在嘗試創建一個類似於SOF的標記同義詞頁面來支持組織這些信息。

周圍的關係和標籤的同義詞「數據模型」的幾個問題:

我認爲主標籤可以有多個同義詞標籤,但一個代名詞標籤只能是 代名詞一個主標籤。那是對的嗎?

另外,主標籤也可以是同義詞標籤嗎?例如,可以說你已經被稱爲標記的JavaScript和你有:

:JS
別名:JavaScript的,JS-網絡

可你也有:

:JavaScript的
別名:JS

因此在上面的示例中,您將繼續解決以最終解決js-webjavascript,因爲主標記:js本身就是同義詞標記。

此外,這讓我想你也可能會遇到一個循環引用,你有一個

:JS
別名:Java的腳本

主人:javascript
同義詞:js

系統如何處理循環引用?

+0

無模式NoSQL數據庫靈活處理此數據模型問題。看看mongodb.org – InspiredJW

+0

循環和鏈是棘手的...這個最簡單的事情是完全不允許循環和鏈開頭... –

回答

15

很容易給你一個關於民俗學,多義現象等元理論上的答案!由於我在StackOverflow端回答問題,我會嘗試給出更多的技術答案。使用StackOverflow Data Explorer運行查詢將允許我嘗試回答您的問題(我不屬於StackOverflow,因此我無法確定)。

在StackOverflow上,主要/同義詞標記關係是仔細stewarded和培養。在從Data Explorer寫作的時間:

  • 標籤有29488行
  • TagSynonyms有1916年行

有趣的是,與其他大衆分類對比這一點,文章「Technorati tags: Good idea, terrible implementation」狀態。

「Technorati的通告,他們現在正在跟蹤466951個不同的標籤,當你認爲這是一個典型的詞典有約計75,000項這是相當不錯的令人印象深刻的」

快速警告,我平時寫的Oracle SQL和我假設Data Explorer正在使用SQLServer,所以我的查詢可能有點業餘。首先我對數據的推測:

  • 標籤表中列出的任何東西都是「主標籤」。
  • 在TagSynonyms表中,TargetTagName是「主標籤」,SourceTagName是「同義詞標籤」。

我們您的具體問題:

「我認爲主標籤可以有多個同義詞標籤,但一個代名詞標籤只能是一個主標籤的同義詞是正確的嗎?」

select * from TagSynonyms where TargetTagName = 'javascript' 

結果:是。主標籤可以有多個同義詞標籤。

select SourceTagName, count(*) from TagSynonyms group by SourceTagName having count(*) > 1 

結果:是。同義詞標籤只能是一個主標籤的同義詞。

「另外,主標籤也可以是同義詞標籤嗎?」

select TagName from Tags 
intersect 
select SourceTagName from TagSynonyms 

結果:是。主標籤也可以是同義詞標籤。當我運行這個查詢時,有465個標籤是同義詞和主標記

「系統如何處理循環引用?」

這是我的邏輯/ SQL可能讓我失望的地方。問題是我可以找到任何循環引用嗎?要做到這一點,我想我需要解決:

  • 設置一個 - 一套是主機和同義詞
  • 集B的標籤 - 同義詞的標籤中設置一個
  • 集C同義詞 - 交叉點b

集合c中的任何內容都是循環引用。

我們已經計算了上面的一個(它有465行)。

集B - 同義詞設置

select SourceTagName from TagSynonyms where TargetTagName in (
select SourceTagName from TagSynonyms where TargetTagName in (
select TagName from Tags 
intersect 
select SourceTagName from TagSynonyms 
)) 

結果的同義詞: 0行

我們可以到此爲止,沒有一點工作了集合C,因爲我們已經知道限量餵養是空的。

除非我得到我的邏輯或SQL錯誤(這是非常可能的),似乎在StackOverflow中沒有循環引用。我會想象有技術過程來防止循環引用的發生(否則StackOverflow可能會遭受StackOverflow!)。

相關問題