Algorithm 使用elasticsearch进行文档聚类的便捷方法是什么?
我在elasticsearch索引中存储了许多来自不同来源的RSS源的新闻文章。当我进行搜索查询时,它会在一个查询中返回大量类似的新闻文章,因为相同的新闻主题会被许多RSS源覆盖 相反,我想做的是在同一主题的一组文章中只返回一篇新闻文章。因此,我需要识别哪些文章是关于同一主题的,对这些文档进行分类,并只返回此类分类中的“最佳”文章 解决这个问题最方便的方法是什么?Algorithm 使用elasticsearch进行文档聚类的便捷方法是什么?,algorithm,elasticsearch,cluster-analysis,Algorithm,elasticsearch,Cluster Analysis,我在elasticsearch索引中存储了许多来自不同来源的RSS源的新闻文章。当我进行搜索查询时,它会在一个查询中返回大量类似的新闻文章,因为相同的新闻主题会被许多RSS源覆盖 相反,我想做的是在同一主题的一组文章中只返回一篇新闻文章。因此,我需要识别哪些文章是关于同一主题的,对这些文档进行分类,并只返回此类分类中的“最佳”文章 解决这个问题最方便的方法是什么? 我是否可以更像这个API一样使用elasticsearch?或者插件是未来的发展方向?或者根本没有方便的方法,我必须以某种方式实现我
我是否可以更像这个API一样使用elasticsearch?或者插件是未来的发展方向?或者根本没有方便的方法,我必须以某种方式实现我自己的版本或对我的文档进行集群?我认为您无法从Elasticsearch中充分进行集群。但是您可以在ES查询中使用聚类结果 如果我要这样做,我会使用您拥有的数据作为集群算法的输入,可能是在ApacheSpark中实现的。我已经写了一些关于一起使用ES和Spark的博客文章(这里有一篇:)。具体如何做到这一点可能超出了StackOverflow答案的范围,但有很多方法可以做到。当然,您当然不必使用Spark(我只是喜欢它)。选择您最喜欢的编程范例来实现集群,甚至使用第三方库。外面有很多 一旦我对聚类结果满意,我就会将聚类元数据作为数据集保存回ES。因此,每个项目都有一个父文档,表示项目所属的集群。然后可以使用此关系(可能与查询或其他内容一起)返回所需的结果
Carrot(如问题中所述)非常适合对查询结果进行聚类-它只能扩展到100或1000个文档,但这可能就足够了。如果您需要更大的尺度,那么像局部敏感哈希这样的方法就避免了计算所有成对距离的需要。使用ES的“更像这样”可以作为散列的快速而肮脏的替代方案,但可能需要一些后处理。但是你会说谷歌新闻中的聚类算法也没有比选择随机关键字更好吗?(另请参见,)。与其说是聚类,不如说是一种近乎重复的检测。特别是,您不会注意到错误,例如文档丢失。