很容易給你一個關於民俗學,多義現象等元理論上的答案!由於我在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!)。
無模式NoSQL數據庫靈活處理此數據模型問題。看看mongodb.org – InspiredJW
循環和鏈是棘手的...這個最簡單的事情是完全不允許循環和鏈開頭... –