java设计一个查询模块_采用Java实现的汉语拼音查询模块
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实现的汉语拼音查询模块相关推荐
- java设计一个user类_关于JAVA设计一个用户类
关于JAVA设计一个用户类 关注:152 答案:2 mip版 解决时间 2021-02-02 05:51 提问者安分守己的小青春 2021-02-02 02:23 设计一个用户类,该类有用户编号. ...
- JAVA设计一个电视机类_漫谈Java程序设计中的接口应用
Java语言提供了一种接口(interface)机制.这种接口机制使Java的面向对象编程变得更加灵活.我们可以用接口来定义一个类的表现形式,但接口不能包含任何实现.在<Thinking in ...
- java设计建议植物大战僵尸_基于Java的游戏设计之植物大战僵尸
植物大战僵尸这款游戏相信大家或多或少都玩过,那么大家有没有想过自己尝试着做一下植物大战僵尸的游戏设计呢.本文将基于Java语言为大家展示如何开发出植物大战僵尸游戏的简易版本,主要内容包括规则.对象.功 ...
- JAVA设计一个fan类_北京信息科技大学java语言程序设计-类和对象
北京信息科技大学java语言程序设计-类和对象 [实验名称]实验2 类和对象 [实验目的] 1.学习和掌握Java创建对象的方法. 2.学习和掌握通过创建对象.使用类的方法. 3.学习和掌握Java类 ...
- java设计一个秒杀系统_面试宝典系列-怎么设计一个秒杀系统
方向:将请求尽量拦截在系统上游 思路:限流和削峰 1.限流:屏蔽掉无用的流量,允许少部分流量流向后端. 2.削峰:瞬时大流量峰值容易压垮系统.常用的消峰方法有异步处理.缓存和消息中间件等技术 异步处理 ...
- java简单的文本编辑器_采用java语言如何建立一个简单的文本编辑器
1.类的框架: 所谓类的框架,就是给出这个类需要的属性和方法,比如本文就需要我们的类继承JFrame父类和载入ActionListener接口,属性有按钮,面板,文本区域框,方法构造方法与事件处理方法 ...
- java写一个登录系统_用java写一个用户登陆界面
一.课堂测试源代码及其结果截图 用java的swing写一个用户登录界面,采用网格布局.源代码如下: /** * */ package LiuLijia; import java.awt.CardLa ...
- 用java编写一个聊天程序_基于JAVA实现的一个简单的网络聊天程序
一.Java Socket的概述 1.Socket套接字方便了开发网络应用程序.TCP面向连接的可靠传输协议.具有数据确认和数据重传机制.保证了发送数据一定能到达通信的对方.UPD协议无连接,不可靠的 ...
- 用java写一个折半查找_用Java写一个折半查找。
import java.util.Comparator; public class MyUtil { public static > int binarySearch(T[] x, T key) ...
最新文章
- python处理xml中非法字符的一种思路
- 分布式事务——消息最终一致性方案
- 学习opengl(起步)
- 《民国枭雄杜月笙》—— 听后总结
- 前端框架Vue、angular、React的优点和缺点,以及应用场景
- SAP 电商云 Spartacus UI 设置 delivery mode 在 3G 慢速网络下的排队效果
- 用一个单链表L实现一个队列(算法导论第十章10.2-3)
- 别用symbolicatecrash来解析crash Log了
- Matlab使用rng固定随机数生成
- 使用BetterZip结合自动操作工具和预设设置创建电影解压程序
- 从零开始的硬改路由器记录
- 一道求极值的三角函数题
- 递归实现部门树形数据结构
- LeetCode 387、字符串中的第一个唯一字符
- 计算机网络技术单招职业能力测试,单招职业能力测试内容.doc
- 进阶面试的必看的ORM架构之 ORM简介
- 对手机号与身份证号加密显示
- PlaintextAttack
- 电商:大众市场与细分市场
- 数据库 --- 索引、视图
热门文章
- oracle笔记(十八)数据完整性约束
- PAT 1028 人口普查
- 学EE做硬件找工作不如学CS做软件,为什么会这样?
- 使用Python+jieba和java+庖丁分词在Spark集群上进行中文分词统计
- 霍金已逝,人工智能的威胁还在!
- 37岁程序员被裁,安卓开发和Java哪个难
- 中小学理化生实验室建设和实验装备配置标准
- MPAndroidChart的详细使用——BarChart条形图(一)
- linux特点有哪些内容,Linux有哪些特点?Linux优点又有哪些?
- discuz 标题字数限制问题修改·最简单明了之方法---快速修改discuz发帖标题限制问题