如何从MongoDB数据库执行统计聚类?

时间:2018-11-27 09:21:35

标签: node.js mongodb mongoose

我有一个应用程序,可让用户在平台上执行搜索。我有一个MongoDB数据库,其中有一个集合,用于存储所有用户的所有搜索。

搜索系统使用户可以选择最少一个过滤器和最多六个过滤器。然后,用户编写要使用的标签。

在用户选择了所有过滤器并编写了所有标签之后,我将该搜索查询保存到MongoDB集合中。我存储搜索的架构如下:

var savedSearches = new Schema({
  filterA: { type : Array, default: [] },
  filterB: { type : Array, default: [] },
  filterC: { type : Array, default: [] },
  filterD: { type : Array, default: [] },
  filterE: { type : Array, default: [] },
  filterF: { type : Array, default: [] },
  userCountry: { type : String, default: [] },
  datetime: { type : Date, default: Date.now }
});

例如:“用户A”使用过滤器A,B和D进行搜索。用户在过滤器A中写入标签“ alpha”,“ beta”和“ charlie”;在过滤器B中写入标签“ delta”,“ omega”和“ juliet”;然后在过滤器D中写入标签“ omega”,“ zulu”和“ roger”。

那么我在Mongo上发送的文档如下:

{
      filterA: ["alpha","beta","charlie"],
      filterB: ["delta","omega","juliet"],
      filterC: [],
      filterD: ["omega","zulu","roger"],
      filterE: [],
      filterF: [],
      userCountry: "Andorra",
      datetime: "2018-11-27T08:32:56.434Z"
}

我想对用户最相似的搜索进行分组,因此,如果“用户A”执行的搜索与“用户B”执行的搜索类似,则这两个搜索将位于同一组(集群)上。然后,我想使用这些组向用户建议类似的搜索。

这个想法是要建立一个统计聚类引擎,以便将这些类似的搜索分组到一个“组”中,但是我不知道如何开始。我尝试了汇总查询,但它们不满足我的要求。

我也尝试检查k-means算法,但不适用于分类数据。

关于如何执行此群集的任何想法?也许使用MCA,然后使用返回的值进行聚类?

谢谢。

0 个答案:

没有答案