您如何有效地实施文档相似性搜索系统?

Bjö*_*ist 5 search trigonometry recommendation-engine similarity

您如何为由一组标签描述的项目实施“类似项目”系统?

在我的数据库中,我有三个表,文章、文章标签和标签。每篇文章通过多对多关系与多个标签相关联。对于每篇文章,我想找到五篇最相似的文章来实现“如果你喜欢这篇文章,你也会喜欢这些”系统。

我熟悉余弦相似度 并且使用该算法效果很好。但这是减慢的方法。对于每篇文章,我需要遍历所有文章,计算文章对的余弦相似度,然后选择相似度最高的五篇文章。

有20万篇文章和3万个标签,计算一篇文章的相似文章需要半分钟。所以我需要另一种算法,它产生的结果大致与余弦相似度一样好,但可以实时运行,并且不需要我每次都遍历整个文档语料库。

也许有人可以为此提出现成的解决方案?我看过的大多数搜索引擎都没有启用文档相似性搜索。

vik*_*sit 1

一些问题,

  • ArticleTag 与 Tag 有何不同?或者说这是M2M映射表?
  • 您能概述一下您是如何实现余弦匹配算法的吗?
  • 为什么不将文档标签存储在某种内存数据结构中,仅使用它来检索文档 ID?这样,您只需在检索期间访问数据库。
  • 根据文档添加的频率,该结构可以设计用于快速/慢速更新。

对答案的初步直觉 - 我想说,在线聚类算法(也许对共现矩阵进行主成分分析,这将近似 K 均值聚类?)。一旦你回答了上面的一些问题,就会得到更好的完善。

干杯。