MySQL如何生成idf文件_mysql 实现TF-IDF 遍历不定个数的列

有这样一道题,要求使用纯mysql实现一个TF-IDF算法。

原始的输入是一个有articles表,有100列,每列存储一个单词。其实核心难点就是怎么遍历对比这100个词和指定词比如'apple'进行对比。首先蛮力穷举所有的列名,如word1 、word2。。。但是这样做代码肯定丑的不像样,而且如果是1000列怎么办呢。

要遍历列的话第一步是要把列名取出来。

create temporary table column_name  #建立临时表

select ORDINAL_POSITION, COLUMN_NAME #选择主位置(类似主键),列名

from information_schema.columns

where table_name='articles1' and COLUMN_NAME like 'word%';# 从 articles1表中取列,仅取出以word开头的

第二步就是要实现循环,使用循环来取出所有列名依次对比,这里主要使用到了procedure、concat、preparestatement。prcedure类似其他语言里的函数,concat涌来拼接字符串,而preparestatement用来将字符串按sql程序执行。

tip1:procedure有个坑,开始时一直调试不成功,这是因为delimiter的问题,也就是怎么样算是你的语句结束了。默认delimiter是';',但是定义procedure时因为中间不能被中断而又会有多条语句,所以先使用 delimter // 命令改变默认delimiter

create procedure pro1(

in article_id integer,

in

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值