设置
我有一大堆帖子(> 10.000),每个帖子都配有不同数量的标签。一个典型的帖子会有例如3-4个标签,如“华盛顿,美国,旅行,美国”,另一个标签如“华盛顿,城市,建筑,美国”。
如此大量的帖子出现问题:很多时候,有一个标签(“美国”)完全包含在另一个标签(“美国”)中。
完全包含意味着属于“美国”的所有帖子也属于“美国”(但不是相反)。 - 这个问题发生在几个层面:想想“美国”是“世界”的一部分或“华盛顿”是“美国”的一部分。
问题
如果你看一下这些标签,就会出现一个逻辑集群:华盛顿是美国的一部分是美国的一部分属于的世界即可。 (华盛顿也是架构的一部分,也是城市的一部分。) - 因此内容有两个层次结构。
现在我想向用户显示WordPress称为标记存档的内容,但仅限于最高级别的标记。所以在这种情况下,它将是“世界”和“城市”。当用户点击“世界”时,会加载一个新页面,显示“美国”,“欧洲”,“亚洲”等。 - 一旦我们达到一个特殊性,只返回最多100个帖子(而不是数千个喜欢上面的级别),选择/聚类过程将停止,我会向用户显示这些帖子。
(不,抱歉,分层类别,这正是我刚刚写的,不是一个选项,因为这些帖子会自动添加,并且将来可能会弹出新的群集。)
问题
如何尽可能高效地确定这些类型的群集?
解决方案(代码)当然是我的首选答案,但我也很高兴,如果有人能指出我处理这个问题的方向。该项目中使用的语言是PHP,SQL和弹性搜索。