mysql - 根据mysql表中存储的数据创建相似度矩阵

标签 mysql sql matrix similarity

我在 mysql 中有下表:

Page; keywordId  
page1; 1  
page1; 3  
page1; 4  
page2; 4  
page3; 1  
page3; 3  
page3; 4  
page3; 5 

我想创建一个相似度矩阵,其中包含基于关键字的每个页面的值,如下所示。页面之间共享的关键字越多,矩阵中的数字就越高。

      page1   page2   page3  
page1   -       1       3  
page2   1       -       1  
page3   3       1       -  

在寻找答案时,我发现了这个entry on stackoverflow处理几乎相同的问题。但是,代码非常密集,我无法重现它来解决我的问题。

如有任何帮助,我们将不胜感激。

最佳答案

您想要的“类似 SQL”的解决方案将查看对并为每对提供一个单独的行:

select ft1.page as page1, ft2.page as page2, count(*) as similarity
from followingtable ft1 join
     followingtable ft2
     on ft1.keywordid = ft2.keywordid and ft1.page <> ft2.page
group by ft1.page, ft2.page;

如果您知道确切的页面,则旋转此页面并不困难。在 SQL 中将其转换为可变数量的页面很棘手,并且需要使用准备好的语句。

关于mysql - 根据mysql表中存储的数据创建相似度矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25023557/

相关文章:

php - 如何在 Laravel 4 上执行此查询?

matlab - 重复连接向量的更快方法

c++ - 正确删除 3D 矩阵的指针

mysql - on 子句中的未知列 {0}

php - 确保持卡人数据的临时存储符合 PCI-DSS 要求?

php - 一个 PHP 表单保存到 MySQL,另一个则不保存,不知道为什么

c - "segmentation fault"将值分配给动态分配矩阵中的特定位置时

mysql - SQL左连接排除不匹配的记录

sql - 降低查询计划中表值函数 - XML Reader 的成本 - 如何?

sql - 为什么 hibernate hql distinct 会导致 sql 在左连接中不同?