我在meta上问了这个问题,但我现在意识到它可能更适合主站点,因为它是一个与任何基于标记的系统相关的一般性问题(我很乐意根据人们的想法关闭/删除一个)问题应该去)
我有一个类似的标记数据系统,我遇到了与SOF相同的问题,我有很多标签真的是一样的东西.我正在尝试创建类似于SOF的标记同义词页面,以支持组织此信息.
关于标签同义词的关系和"数据模型"的几个问题:
我假设主标记可以有多个同义标记,但同义标记只能是一个主标记的同义词.那是对的吗?
另外,主标签也可以是同义词标签吗?例如,假设你有一个名为javascript的标签,你有:
大师:js
同义词:java-script,js-web
你还可以:
大师:javascript
同义词:js
因此,在上面的示例中,您将继续解析以最终将js-web解析为javascript,因为主标记:js本身是同义词标记.
此外,这让我觉得你也可以遇到一个循环引用,你有一个
主人:js
同义词:java-script
和
大师:javascript
同义词:js
系统如何处理循环参考?
Mar*_*ren 16
对于关于民众分类,一词多义等的元,你很有可能给出一个更理论的答案!由于我在StackOverflow方面回答,我将尝试提供稍微更具技术性的答案.使用StackOverflow数据资源管理器运行查询将允许我尝试回答您的问题(我不隶属于StackOverflow,因此我无法确切知道).
在StackOverflow上,主/同义词标记关系经过仔细的管理和培养.在从Data Explorer写入时:
有趣的是将其与其他民俗分类法进行对比,一篇文章" Technorati标签:好主意,可怕的实施 "说明.
"Technorati宣称他们现在正在跟踪466,951个不同的标签,当您考虑到一个典型的字典有大约75,000个条目时,这非常令人印象深刻"
一个快速的警告,我通常编写Oracle SQL,我认为数据资源管理器使用SQLServer,所以我的查询可能有点业余.首先我对数据的假设:
现在来看你的具体问题:
"我假设主标签可以有多个同义词标签,但同义词标签只能是一个主标签的同义词.这是正确的吗?"
select * from TagSynonyms where TargetTagName = 'javascript'
Run Code Online (Sandbox Code Playgroud)
结果:是的.主标记可以具有多个同义标记.
select SourceTagName, count(*) from TagSynonyms group by SourceTagName having count(*) > 1
Run Code Online (Sandbox Code Playgroud)
结果:是的.同义词标记只能是一个主标记的同义词.
"另外,主标签也可以是同义词标签吗?"
select TagName from Tags
intersect
select SourceTagName from TagSynonyms
Run Code Online (Sandbox Code Playgroud)
结果:是的.主标记也可以是同义标记.当我运行此查询时,有465个标签同时是同义词和主人
"系统如何处理循环引用?"
这是我的逻辑/ SQL可能让我失望的地方.问题是我可以找到任何循环引用吗?要做到这一点,我想我需要解决:
集合c中的任何内容都是循环引用.
我们已经计算了上面的设置(它有465行).
设置b - set a的同义词的同义词
select SourceTagName from TagSynonyms where TargetTagName in (
select SourceTagName from TagSynonyms where TargetTagName in (
select TagName from Tags
intersect
select SourceTagName from TagSynonyms
))
Run Code Online (Sandbox Code Playgroud)
结果: 0行
我们可以在这里停下来,没有必要设置c,因为我们已经知道set b是空的.
除非我的逻辑或SQL错误(这是非常可能的),否则StackOverflow中似乎没有循环引用.我认为有一些技术流程可以防止循环引用的发生(否则StackOverflow可能会遭受StackOverflow!).