我正在尝试理解构建相关/常见关键字或标签的空间地图的策略或想法。以SO为例;如果您转到https://stackoverflow.com/tags并输入"python“,您将获得包含该单词的所有标签,但不会得到可能密切相关的标签( WSGI、Google的应用程序引擎、飞行等)。
与我的问题一致的是,您如何构建一个可以查询的空间地图,以便从搜索中找到密切相关的标签/关键字,并按权重排序?但是,如何将tag foo的权重存储到可能更多的标签中,同时仍然保持系统的响应能力呢?
我已经看过David Weinberger的Google Tech-talk,这是一个很棒的技术演讲,让我开始思考。http://video.google.com/videoplay?docid=2159021324062223592&ei=qseASZvgI6e4qAP91a2PDg&q=google+tech+talk
发布于 2009-02-02 12:28:51
查看O‘’Reilly的"Programming Collective Intelligence"中的集群概念。
发布于 2009-01-28 23:21:37
看来,建立关于这种关系的数据的最有可能的方法是对哪些标签一起出现的频率最高,同时与最少的其他标签一起出现。
也就是说,"c++“和"stl”经常一起出现,而"stl“很少(?)没有"c++",所以它们是相关的(至少在一个方向上)。"c++“和"algorithm”也经常一起出现,但它们更经常分开出现,所以它们是不相关的。
发布于 2009-01-29 00:27:43
在思考如何构造数据时,我的一个想法可能是一个四表系统。一个表将是源数据(例如,因此,必须有某种类型的问题表),该问题表被连接到标签表,然后被连接回标签表。
#pseudo code
source table {
id: int
source_data: text
}
source_tag table {
source_id: int
tag_id: int
}
tag table{
id: int
tag: String(30)
}
tag_weight table {
base_tag_id: int
weight: float( 0-10 or 100 ) or int ( count of mutual occurrence )
source_tag_id: int
}我不知道这个结构的效率有多高,但我想这是需要努力的地方。否则,为了使其工作,对源数据的新准入可能会触发after update触发器,或者让后台的工作进程在预设时间重新平衡权重。
https://stackoverflow.com/questions/489453
复制相似问题