similarity函数mysql_计算两个字符串的相似度mysql 自定义函数:Levenshtein_mysql_Mysql_数据库...

1、功能描述:

mysql 自定义函数。用来计算字符A转换成字符串B所花费的代价,数值越小,代价越低。(换句话来说,就计算两个字符串的相似度,值越小相似度越高)。

该实现采用了编辑距离算法,详见:http://baike.baidu.com/link?url=EhmqDIoInSurOWI8VfR5bdmwxuYjPGKgqET2oNyv9--zDREhTUe5sYdxWLxS4v3tdK1PJVOFaOy9c6uHoElBSK

2、使用方法:

使用源代码的话,从第1步开始。如果是直接使用二进制发布包的话,直接从第4步开始即可。

1)下载本代码

2)安装mysql开发包。

mysql主分支文件名类型:libmysqlclient15-dev

mariaDB分支文件类似:MariaDB-10.0.21-centos7-x86_64-devel

3)编译源代码:

g++ -shared -fPIC -I /usr/include/mysql -o lev_distance.so lev_distance.cpp

4)将so文件复制到mysql插件目录

cp lev_distance.so /usr/lib64/mysql/plugin

5)创建mysql自义函数。

CREATE FUNCTION levenshtein RETURNS INTEGER SONAME 'lev_distance.so';

6)完成。

7)测试:

SELECT levenshtein('abc','dbca')

项目主页:http://www.open-open.com/lib/view/home/1440302113917

计算从 4 个 MySQL 表中检索到的所有可能的文本对的余弦相似度,你可以按照以下步骤进行操作: 1. 将 4 个表中的文本字段连接起来,形成一个大的文本集合。 2. 对文本集合进行分词处理,将每个文本转换为一个词向量。 3. 对每两个文本的词向量进行计算,得到它们之间的余弦相似度。 4. 将结果存储到一个新的表中。 以下是一个示例 SQL 查询语句,用于计算 4 个表中所有文本对之间的余弦相似度: ``` SELECT CONCAT_WS('-', t1.id, t2.id) AS id_pair, COSINE_SIMILARITY(t1.vector, t2.vector) AS similarity FROM ( SELECT id, TEXT_VECTOR(text) AS vector FROM table1 UNION ALL SELECT id, TEXT_VECTOR(text) AS vector FROM table2 UNION ALL SELECT id, TEXT_VECTOR(text) AS vector FROM table3 UNION ALL SELECT id, TEXT_VECTOR(text) AS vector FROM table4 ) t1 JOIN ( SELECT id, TEXT_VECTOR(text) AS vector FROM table1 UNION ALL SELECT id, TEXT_VECTOR(text) AS vector FROM table2 UNION ALL SELECT id, TEXT_VECTOR(text) AS vector FROM table3 UNION ALL SELECT id, TEXT_VECTOR(text) AS vector FROM table4 ) t2 ON t1.id < t2.id; ``` 其中,TEXT_VECTOR() 函数用于将文本转换为词向量,COSINE_SIMILARITY() 函数用于计算余弦相似度。使用 CONCAT_WS() 函数将每个文本对的 ID 连接起来,形成一个新的 ID 列。最后,使用 JOIN 操作将每个文本与所有文本进行配对,并计算它们之间的余弦相似度。由于每个文本对会被计算两次,所以使用 ON t1.id < t2.id 来避免重复计算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值