ToB企服应用市场:ToB评测及商务社交产业平台

标题: Oracle和达梦:相似度函数:UTL_MATCH [打印本页]

作者: 泉缘泉    时间: 2023-12-13 11:48
标题: Oracle和达梦:相似度函数:UTL_MATCH
UTL_MATCH介绍:

Oracle的UTL_MATCH包是一个提供字符串匹配和相似度计算功能的工具包。它包含了一系列函数,用于执行字符串比较、相似度计算和模式匹配等操作。
UTL_MATCH包中的函数可以用于以下任务:
UTL_MATCH包提供了一些有用的功能,可以帮助开发人员在Oracle数据库中进行字符串处理和匹配操作。请注意,使用UTL_MATCH包需要适当的权限,并且在正确的数据库环境中执行。
1、归一化编辑距离

函数:UTL_MATCH.edit_distance_similarity

使用

1、第一个参数是要匹配的字符串,第二个参数是要与之进行匹配的字符串
  1. SELECT UTL_MATCH.edit_distance_similarity ('param1', 'param2') AS similarity
复制代码
☆2、第一个参数可以是查询表的列,您可以将表的列名作为第一个参数传递给该函数,以计算该列中每个值与指定字符串之间的相似度。
  1. SELECT UTL_MATCH.edit_distance_similarity (列名, '6') AS similarity
  2. SELECT UTL_MATCH.edit_distance_similarity ("列名", '6') AS similarity
复制代码
实践

  1. SELECT
  2.   *
  3. FROM
  4.   (
  5.   SELECT
  6.     UTL_MATCH.edit_distance_similarity (C2_VARCHAR2, '6') AS similarity,
  7.     *
  8.   FROM
  9.     TABLE_1
  10.   ORDER BY similarity DESC) AS a
  11. WHERE
  12.   similarity >= 2
复制代码
返回:

2、Jaro-Winkler相似度算法

函数:UTL_MATCH.JARO_WINKLER_SIMILARITY

Jaro-Winkler相似度是一种用于比较两个字符串之间相似程度的度量方法。它基于字符匹配和字符顺序的相似性,常用于姓名、地址等文本数据的相似度计算。
Jaro-Winkler相似度算法由William E. Winkler在1989年提出,是对Jaro相似度算法的改进。它通过计算字符匹配的数量、字符顺序的相似性以及前缀匹配的权重来确定字符串的相似度。
Jaro-Winkler相似度的计算过程如下:
  1. similarity = (m / |s1| + m / |s2| + (m - t) / m) / 3
复制代码
  1. prefix weight = prefixLen * p * (1 - similarity)
复制代码
其中,prefixLen是前缀匹配的长度,p是一个常数(通常为0.1),similarity是相似度。
  1. JW similarity = similarity + prefix weight
复制代码
Jaro-Winkler相似度的取值范围为0到100,数值越接近100表示字符串越相似。
在Oracle数据库中,可以使用UTL_MATCH包中的UTL_MATCH.JARO_WINKLER_SIMILARITY函数来计算Jaro-Winkler相似度。该函数接受两个字符串作为参数,并返回它们之间的Jaro-Winkler相似度值。
使用
  1. -- oracle/dm实现的:Jaro-Winkler相似度算法
  2. SELECT UTL_MATCH.JARO_WINKLER_SIMILARITY('h1e2l3l4o', 'ddddhello') AS JaroWinkler相似度;
复制代码
结果



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4