1918年和1922年,MargaretK.Odell和RobertC.Russell提出了Soundex方法,用来对姓氏进行编码,为所有美国人口做索引。Soundex是一种语音算法,根据英文单词的读音计算得到一个字符串值,形式为一个字母加3个数字[1]。例如Smith和Smyth的Soundex值都是S530。在一定程度上,这种算法能够为发音相近的单词产生相同的返回值,可用于基于英文发音的模糊匹配,在当今主流的数据库管理系统中都已经被实现。在中文的管理信息系统中,也存在大量根据发音查询数据的需求。例如,查询与“黎明”发音相同的人名字,则结果应包含“李明”、“李鸣”等,若只要求发音近似,则结果还应该包含“李民”、“李敏”等。基于中文发音的查询技术是非常重要的,用户使用它能够大大提高检索效率,对于特定行业,如学籍管理、户籍管理、酒店预定管理系统、电话查号服务系统、药品管理系统[2]等,有着突出的优势。1中文发音查询原理在汉字系统中,每个汉字都有一个或多个发音,发音包含声母、韵母和声调。中文发音查询是对数据库中的中文信息进行与发音有关的检索,而不仅仅是比较字面是否相同。按照不同的分类标准,中文发音查询存在多种实现技术。根据比较内容可分为声母查询和全音查询。前者一般用于快速查询,仅仅根据中文发音的声母来检索数据,如根据药品简称“amxl”就可以得到“阿莫西林”。由于该检索只以声母为依据,对返回的大量结果用户需要进一步筛选。全音查询则同时比较声母和韵母,一般不比较声调,结果较为精确,但是如果发音不准确就容易造成结果丢失。例如在酒店预定管理系统中,如果全音查询要求发音完全相同,则使用“limin”只能查询到“李敏”,而无法检索到“李明”的预定信息。根据精确度进行分类分为精确查询和模糊查询。精确查询要求发音(声母或全音)完全相同,结果集合较小,如使用“amxn”就无法查询到“阿莫西林”。模糊查询则按照一定的规则(如表1所示)进行检索,可得到发音近似的结果集合,从而方便用户的使用。例如,在酒店预定管理系统中,使用“limin”可以查询到“李明”。表1模糊发音规则表声母韵母z=zhan=angs=shen=engc=chin=ingl=nian=ianguan=uang根据实现级别的不同可分为宿主级查询、函数级查询和元级查询。宿主级查询指获取中文发音的功能主要在SQL的宿主语言中完成。首先由SQL从数据库中检索出汉字,宿主语言调用相应的方法得到其发音,再判断其是否满足发音条件[3];函数级查询一般需要更改数据库结构用于保存发音信息,通过在数据库中自定义函数获得发音来实现查询[2,4-5];元级查询指数据库管理系统软件提供的SQL本身就具有类似于Soundex的函数,可以获取中文发音,从而在系统元级上实现查询。宿主语言查询和函数级查询比较灵活,但是需要程序员自行编写相应的发音处理函数,如果将发音信息保存在用户数据库中,则会造成信息冗余,更新复杂等不便,往往还要结合触发器来保证中文和发音的一致性[5],这样数据库系统的运行效率得不到保证。元级查询需要SQL提供发音处理函数,在数据库管理系统的源代码级别上加以实现,执行速度在三者中是最快的。目前,数据库管理系统软件只提供了Soundex来处理英文发音,并没有考虑到其他语种。因此,现有文献讨论的中文发音查询技术均处于宿主级别或函数级别。一般情况下,可以结合3种分类法来区分不同的中文发音查询技术。例如,药品管理系统中使用ypmc字段保存药品名称,假如数据库管理系统本身提供了函数Soundex获取汉字的拼音,则可使用其来实现

mysql对韵母分组,基于MySQL的中文发音查询的元级实现相关推荐

  1. jsp mysql企业网站_JSP基于MySQL构建中小企业电子商务网站.pdf

    JSP基于MySQL构建中小企业电子商务网站.pdf 还剩 4页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: Micr假omputer Applica ...

  2. mysql研究内容_基于MySQL数据库的数据管理的研究

    [摘 要]MySQL 是一种开放源代码的关系型数据库管理系统,MySQL数据库系统使用最常用的数据库管理语言,即结构化查询语言进行数据库管理.缓存管理是对于文件数据在内存中的特殊管理,基于内存管理,向 ...

  3. mysql geohash函数_基于MySQL实现按距离排序、范围查找geoHash

    简介 现在几乎所有的O2O应用中都会存在"按范围搜素.离我最近.显示距离"等等类似的功能,那这样的功能是怎么实现的呢?本文提供了基于MySQL的实现方式,同样适用于其它数据库.本文 ...

  4. Mysql sequence使用_基于Mysql的Sequence实现

    团队更换新框架.新的业务全部使用新的框架,甚至是新的数据库--Mysql. 这边之前一直是使用oracle,各种订单号.流水号.批次号啥的,都是直接使用oracle的sequence提供的数字序列号. ...

  5. docker mysql忘记密码_docker基于mysql镜像构建mysql容器忘记密码解决办法

    环境: [root@master-106 ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@master-1 ...

  6. mysql in 分组,基于mysql实现group by取各分组最新一条数据

    前言: group by函数后取到的是分组中的第一条数据,但是我们有时候需要取出各分组的最新一条,该怎么实现呢? 本文提供两种实现方式. 一.准备数据 二.三种实现方式 1)先order by之后再分 ...

  7. mysql对韵母分组,音的分组教案

    教学目标1.使学生掌握分组后能运用提公因式和公式法把多项式分解因式:2.通过因式分解的综合题的教学,提高学生综合运用知识的能力.教学重点和难点重点:在分组分解法中,提公因式法和分式法的综合运用.难点: ...

  8. mysql对韵母分组,复合元音韵母练习.ppt

    复合元音韵母练习,定义:复合元音韵母简称复韵母,是由两个或三个元音组成 组成:普通话13个复韵母中二合复韵母有9个:ai,ei,ao,ou,ia,ie,ua,uo,ue.中响三合复韵母有4个:iao, ...

  9. mysql 组内分组_[MySQL] group by 分组并进行组内排序取得最新一条

    有一个需求是获取指定用户发送的最新的内容,这个时候需要使用group by分组功能 但是怎么获取最新的呢 ? 如果直接进行order by 是不能实现的,因为MysqL会先执行group by 后执行 ...

最新文章

  1. php xp不支持,据说PHP5.5发布 不再支持XP和2003
  2. python批量读取csv文件-Python读取/批量读取文件
  3. SpringBoot webmvc项目导出war包并在外部tomcat运行产生的诸多问题以及解决方案
  4. url的特殊字符编码 encodeURI编码
  5. powerdesign 缩写AK,PK,IX,CK,FK,DF,UQ
  6. ##6.2 Neutron计算节点-- openstack pike
  7. mysql 页级锁写法_MYSQL中表级锁、行级锁、页级锁介绍
  8. MCtalk教育大咖说:不忘教育初心,柚子练琴聚焦音乐陪练
  9. Java毕设项目成都某4S店销售管理系统计算机(附源码+系统+数据库+LW)
  10. eclipse 缓解眼睛疲劳保护眼睛
  11. 冰桶挑战”的火爆程度与朋友圈?
  12. 树形选择排序(第十章 P279)
  13. Win10系统开机后任务栏卡死解决方法
  14. 阿里云免费的ssl证书到期怎么续费
  15. 计算机组成原理实验所用的指令,计算机组成原理实验报告-控制器及微指令系统的操作与运用...
  16. APT32F102-SIO模块控制WS2812
  17. 杨锦鑫:美元重返95,欧元绝地反扑
  18. 来自鹅厂的面试经验(干货)
  19. 电脑开始怎么设置计算机用户名,如何修改电脑登录用户名以及密码呢?5秒钟让你学会...
  20. 回溯算法解决智能拼图的最小步骤的问题

热门文章

  1. 国家开放大学-农村社会学-形考作业1
  2. 电信天翼路由器 连接另外一个路由器
  3. canvas student下载_悉大官方学生系统万能的Canvas和Sydney Student,你真的会用吗?官网平台两步走+实用功能型Tips!...
  4. 读《深入浅出MySQL数据库开发、优化与管理维护(第2版)》笔记2 WITH ROLLUP关键字
  5. Python之qq自动发消息
  6. 系统介绍python魔法方法
  7. 74cms|骑士cms|开源招聘系统,数据结构
  8. 全国公立医院病案首页上报系统(适用于二、三级医院)
  9. sim函数 matlab输出,关于MATLAB里sim函数?
  10. openGL, mac 上 glad 的环境搭建