MySQL查询、DOM树编辑距离计算方法以及工具——RTED
【本文只是记录自己在学习中觉得要写blog记录下的东西,很多东西网上都有,很基础,可以用脑袋记住的没有浪费笔墨,当然,后期还会扩展】
基础查询
java+号的作用
运算符:两个操作数都为数值型
连接符:只要有一个操作数为字符串
mysql+号的作用
运算符
select 100+90 两个操作符都为数值型,则作加法运算
select ‘123’+90只要一方为字符型,试图将字符型数值转换成数值型{转换成功,则继续做加法运算|转换失败,则将字符型数值转换为0}
select null+10 只要其中一方为null,则结果肯定为null
SELECT CONCAT(‘a’,’b’,’c’) AS 结果
假如原始奖金为NULL则设为0
1 | SELECT |
条件查询
分类:
按条件表达式筛选
条件运算符:> < = != <>(不等) >= <=
按逻辑表达式筛选
逻辑运算符:&& || ! and or not
模糊查询
like- between and- in- is null
标明转义
1 | SELECT |
in
含义:判断某字段的值是否属于in列表中的某一项
特点:使用in提高语句简洁度 in列表的值类型必须一致或兼容
排序查询
按表达式排序【按年薪的高低显示员工的信息和年薪】
1 | SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪 |
order by一般放在查询子句的最后面,limit子句除外
常见函数
单行函数(处理)concat、length字节长度、ifnull
分组函数(统计)统计函数、聚合函数、组函数
将姓变大写,名变小写,然后拼接
1 | SELECT CONCAT(UPPER(last_name),LOWER(first_name)) 姓名 FROM employees; |
截取从指定索引处指定字符长度的字符
1 | SELECT SUBSTR('ZHENGJIAN',1,3) out_put; |
instr 返回子串第一次出现的索引,如果找不到返回0
TRIM去掉前后空格
TRIM(‘a’ FROM ‘aaaaaaaaaaaaaaaaa张翠山aaaaaaaaaaaaaaaaaaa’)
lpad用指定的字符实现左填充指定长度
1 | --超过了则会截断,不够就填充 |
replace替换
1 | SELECT REPLACE('DDDDDA','A','D') AS out_put; |
truncate截断
SELECT TRUNCATE(1.69999,1)
1 | --返回当前系统日期,不包含时间 |
将日期格式的字符转换成指定格式的日期STR_TO_DATE(‘9-13-1999’,’%m-%d-%Y’)
将日期转换成字符date_format(‘2018/6/6’,’%Y年%m月%d日’)
流程控制函数
if 函数
1 | SELECT IF(10<5,'大','小') |
1 | case 要判断的字段或表达式 |
使用case-when,按照下面的条件
job grade
AD_PRES A
ST_MAN B
IT_PROG C
1 | SELECT job_id AS job, |
分组函数
sum 求和 avg 平均值 max最大值 min 最小值 count 计算个数
1 | SELECT SUM(salary) FROM employees; |
保留小数点后两位ROUND(AVG(salary),2)
COUNT()计算非空的记录总数
和distinct搭配
1 | SELECT SUM(DISTINCT salary),SUM(salary) FROM employees; |
统计2的个数
1 | SELECT COUNT(2) FROM employees; |
和分组函数一同查询的字段要求是group by 后的字段
查询日期相差的天数
1 | SELECT DATEDIFF('2017-10-1','2017-9-2') |
RTED
Highly Efficient Algorithms for Structural Clustering of Large Websites
A key challenge to fulfill this vision is the need to perform web-scale information extraction over domains of interest.
关键挑战是需要对感兴趣的领域进行web规模的信息提取。
web-scale wrapper induction
In fact, most of these techniques based on similarity functions along with agglomerative hierarchical clustering have a quadratic complexity, and cannot handle large sites.
实际上,大多数基于相似度函数和凝聚层次聚类的技术都具有二次复杂性,并且无法处理大型站点。
网站使用脚本从数据库发布数据,一个脚本是一个函数关系R对于给定的数据表,对于每一对R,它产生一个web页面,包括一对(url,html)。
reconstructing the hidden database from published webpages从已发布的网页重建隐藏数据库。
wrapper是由通用脚本生成的所有网页的集合
因此,我们需要从整体上看一组网址,并且不能依赖字符串相似性来进行聚类。
数据术语和脚本术语可以出现在URL中的相同位置。 例如,同一网站也可能有第三种形式的网页:site.com/users/reviews/id.html。 因此,在第一个位置,我们有脚本术语用户以及状态列表,在第二个位置,我们有城市评论。 但是,如果其中一个术语(例如评论)的频率高于同一位置中的其他术语,则表明其是一个脚本术语。 我们将此预期行为称为大组件效应。 我们注意到,根据大型组件的影响,有些情况下非常频繁的数据项可能与脚本术语无法区分。 我们将在5.4节中使用语义约束来说明如何在这种情况下消除脚本术语和数据术语的歧义。
信息理论表达
定义“*”为元数arity
www.2spaghi.it/ristoranti/\*/\*/\*/\* 的元数是4
【RTED是在这个文献里,我只看到了第7页,找到了工具jar包,进行简单的RTED算法够了,也包括Zhang and shasha这个经典的算法,我也找到了Python实现的。当然如果你感兴趣,可以用py实现一下RTED,期待👉】
Efficient Computation of the Tree Edit Distance
MATEUSZ PAWLIK and NIKOLAUS AUGSTEN, University of Salzburg
- 树的编辑距离
计算两个树的编辑距离,树的表示形式{A{B{X}{Y}{F}}{C}}
根节点是A,两个孩子节点是B和C,B的孩子节点是XYZ。
1 | java -jar RTED.jar -t TREE1 TREE2 |
计算由两个文件创建的树的编辑距离
1 | -f FILE1 FILE2 |
设置开销
1 | -c CD CI CR |
设置移除策略
1 | -s {left|right|heavy} |
1 | java -jar RTED_v0.1.jar -t {a{b}{c}} {a{b{d}}} --ZhangShashaLeft -v |