0引言现有管理信息系统的数据库中存储了大量的中文信息,中文信息的检索是MIS的重要功能,对于中文字段的常见查询方法是输入汉字字符串,但是此方法需要过多的击键次数,例如,查询人名为“王晓明”的记录,需要中文输入法输入“wangxiaoming”,击键至少12次,查询效率低。而汉字简拼查询的方法却可以有效地提高中文信息的检索速度,简拼就是汉字拼音的首字母。例如同样查询“王晓明”记录,简拼查询只需要输入“wxm”。示例表明使用简拼查询能快速定位目标记录,降低击键次数,大大提高查询的效率。现有的汉字简拼查询方法大多使用GB2312-80的一级汉字字库,利用一级汉字按照拼音排列的规律,实现汉字内码到拼音首字母的映射。这种方法实现简单,但是缺点明显。缺点一,二级汉字按照笔画排序,依照现有的方法无法被识别;缺点二,一级汉字只有3755个,而常用汉字数量远大于这个数,不能满足所有应用。笔者设计并实现了一个汉字拼音查询模块可以解决上述问题。该模块具有以下优点:(1)可以识别20902个汉字的拼音,涵盖了所有GBK的汉字;(2)实现了汉字字符与内码的双向转换;(3)实现了根据汉字字符(或者汉字内码)查询所有拼音的功能,包括多音字情况;(4)实现了根据汉字字符(或者汉字内码)查询所有声母首字母的功能,包括多音字情况。1实现汉字拼音查询模块采用Java语言编写,类名为PinyinDic,使用Java属性文件作为汉字拼音对照表的存储载体,汉字拼音对照表如表1所示。模块初始化时进行属性文件加载,保存为TreeMap对象形式,所有的汉字拼音查询操作都基于汉字拼音对照表。因此,实现该对照表是进行汉字拼音查询操作的前提。表1汉字拼音对照表因为汉字拼音对照表没有现成的数据文件提供,所以开发人员必须人工生成。通过Windows2000操作系统的汉字输入法可以得到对照表的雏形,再经过一系列的处理才能使用,处理步骤如下:(1)运行Windows2000的Imegen.exe文件得到winpy.txt文件;(2)去除winpy.txt文件中的所有词组记录;(3)合并多音字的所有汉字拼音,例如多音字“差”在win-py.txt中含有3条记录,分别是“差cha”、“差chaicha”和“差cicha”,合并后得一条记录“差cichachai”;(4)将汉字转化成内码,并且按照内码升序排序,这样可以提高检索汉字的速度。为了提供强大的汉字拼音处理功能,PinyinDic类提供了丰富的接口形式,如表2所示。表2PinyinDic的主要接口及其示例序号方法名说明1StaticgetHanzi(int):String根据汉字内码返回汉字字符示例1:PinyinDic.getHanzi(-20319);2StaticgetHanziCode(String):int可以查询指定汉字的内码示例2:PinyinDic.getHanziCode(“啊”);3newQueryTask(String):voidtoPinyinArray(void):String[]4newQueryTask(String):voidpinyinTokenizer(void):voidhasNextPinyin(void):booleannextPinyin(void):String以StringTokenizer方式返回指定汉字的所有拼音(包含多音字)示例4:PinyinDicdic=newPinyinDic();dic.newQueryTask(“啊”);dic.pinyinTokenizer();while(dic.hasNex

java设计一个查询模块_采用Java实现的汉语拼音查询模块相关推荐

  1. java设计一个user类_关于JAVA设计一个用户类

    关于JAVA设计一个用户类 关注:152  答案:2  mip版 解决时间 2021-02-02 05:51 提问者安分守己的小青春 2021-02-02 02:23 设计一个用户类,该类有用户编号. ...

  2. JAVA设计一个电视机类_漫谈Java程序设计中的接口应用

    Java语言提供了一种接口(interface)机制.这种接口机制使Java的面向对象编程变得更加灵活.我们可以用接口来定义一个类的表现形式,但接口不能包含任何实现.在<Thinking in ...

  3. java设计建议植物大战僵尸_基于Java的游戏设计之植物大战僵尸

    植物大战僵尸这款游戏相信大家或多或少都玩过,那么大家有没有想过自己尝试着做一下植物大战僵尸的游戏设计呢.本文将基于Java语言为大家展示如何开发出植物大战僵尸游戏的简易版本,主要内容包括规则.对象.功 ...

  4. JAVA设计一个fan类_北京信息科技大学java语言程序设计-类和对象

    北京信息科技大学java语言程序设计-类和对象 [实验名称]实验2 类和对象 [实验目的] 1.学习和掌握Java创建对象的方法. 2.学习和掌握通过创建对象.使用类的方法. 3.学习和掌握Java类 ...

  5. java设计一个秒杀系统_面试宝典系列-怎么设计一个秒杀系统

    方向:将请求尽量拦截在系统上游 思路:限流和削峰 1.限流:屏蔽掉无用的流量,允许少部分流量流向后端. 2.削峰:瞬时大流量峰值容易压垮系统.常用的消峰方法有异步处理.缓存和消息中间件等技术 异步处理 ...

  6. java简单的文本编辑器_采用java语言如何建立一个简单的文本编辑器

    1.类的框架: 所谓类的框架,就是给出这个类需要的属性和方法,比如本文就需要我们的类继承JFrame父类和载入ActionListener接口,属性有按钮,面板,文本区域框,方法构造方法与事件处理方法 ...

  7. java写一个登录系统_用java写一个用户登陆界面

    一.课堂测试源代码及其结果截图 用java的swing写一个用户登录界面,采用网格布局.源代码如下: /** * */ package LiuLijia; import java.awt.CardLa ...

  8. 用java编写一个聊天程序_基于JAVA实现的一个简单的网络聊天程序

    一.Java Socket的概述 1.Socket套接字方便了开发网络应用程序.TCP面向连接的可靠传输协议.具有数据确认和数据重传机制.保证了发送数据一定能到达通信的对方.UPD协议无连接,不可靠的 ...

  9. 用java写一个折半查找_用Java写一个折半查找。

    import java.util.Comparator; public class MyUtil { public static > int binarySearch(T[] x, T key) ...

最新文章

  1. python处理xml中非法字符的一种思路
  2. 分布式事务——消息最终一致性方案
  3. 学习opengl(起步)
  4. 《民国枭雄杜月笙》—— 听后总结
  5. 前端框架Vue、angular、React的优点和缺点,以及应用场景
  6. SAP 电商云 Spartacus UI 设置 delivery mode 在 3G 慢速网络下的排队效果
  7. 用一个单链表L实现一个队列(算法导论第十章10.2-3)
  8. 别用symbolicatecrash来解析crash Log了
  9. Matlab使用rng固定随机数生成
  10. 使用BetterZip结合自动操作工具和预设设置创建电影解压程序
  11. 从零开始的硬改路由器记录
  12. 一道求极值的三角函数题
  13. 递归实现部门树形数据结构
  14. LeetCode 387、字符串中的第一个唯一字符
  15. 计算机网络技术单招职业能力测试,单招职业能力测试内容.doc
  16. 进阶面试的必看的ORM架构之 ORM简介
  17. 对手机号与身份证号加密显示
  18. PlaintextAttack
  19. 电商:大众市场与细分市场
  20. 数据库 --- 索引、视图

热门文章

  1. oracle笔记(十八)数据完整性约束
  2. PAT 1028 人口普查
  3. 学EE做硬件找工作不如学CS做软件,为什么会这样?
  4. 使用Python+jieba和java+庖丁分词在Spark集群上进行中文分词统计
  5. 霍金已逝,人工智能的威胁还在!
  6. 37岁程序员被裁,安卓开发和Java哪个难
  7. 中小学理化生实验室建设和实验装备配置标准
  8. MPAndroidChart的详细使用——BarChart条形图(一)
  9. linux特点有哪些内容,Linux有哪些特点?Linux优点又有哪些?
  10. discuz 标题字数限制问题修改·最简单明了之方法---快速修改discuz发帖标题限制问题