用拼音输入法字典库实现同音字模糊查询

文章作者 100test 发表时间 2007:10:31 12:31:15
来源 100Test.Com百考试题网


  在开发各类应用管理系统中,一般都要实现各种查询功能,如何准确、快速查找到符合条件的记录,是实现各种查询功能的重点。系统的实际开发过程中,查询功能一般都是通过对字符进行比较、判断等方法来实现。我们开发一个人事管理系统中过程中,系统要具有新的查询方式,即只要知道一个人姓名的读音,并不知道每个字的具体写法,通过检索数据库,就能把所有符合这个读音的记录内容全部显示出来。由于汉字存在着大量的同音字,采用常用的字符比较法,如查找一个名叫“李晓军”的人,数据库中存在的叫“李小君”的数据就不能查到,利用常用的查询方法实现不了同音字的查询功能。为了解决同音字的模糊查询问题,笔者借用WINDOWS系统下的输入法生成器,将系统中的拼音输入法字典库,生成了一个拼音查询字典库,利用这个拼音查询字典库,在使用VFP数据库管理系统编写的人事管理系统中,轻松实现了按语音进行模糊查询功能,具体思路如下:

  一、首先要生成一个拼音字典查询数据库

  选择WINDOWS系统的开始—程序—附件—输入法生成器,进入输入法生成器窗口,使用鼠标点击逆转换的页框,点击打开文件按钮,选中硬盘WINDOWS\SYSTEM文件夹下的WINPY.MB文件,在码表原文件中输入C:\WINPY.TXT,输入完毕后点击逆转换,此时系统对全拼字典库进行转换,最后将生成一个纯文本文件,利用这个纯文本文件编写一段小程序即可生成一个拼音字典查询数据库。

  二、进入VFP系统,编写一段生成程序命令为ZH.PRG

  程序中的内容如下所列:

  CREA TABL B1 (NR C(60),HZ C(2),PY1 C(12),PY2 C(12))&.&.创建一个临时数据库

  USE B1 &.&.打开生成的数据库

  APPE FROM C:\WINPY.TXT SDF

  &.&.将利用输入法生成器生成的字典码文件WINPY.TXT文件内容追加到数据库中

  DELE FOR ASC(SUBS(NR,3,1)) >=128

  &.&.在数据库中删除全部词组内容,只留下单字 DELE FOR RECN()< 13 &.&.在数据库删除编码库的头文件

  PACK &.&.清除打了删除标记的记录。

  REPL HZ WITH SUBS(NR,1,2),PY1 WITH SUBS(NR,3,AT(’ ’,NR)-2),.

   PY2 WITH SUBS(NR,AT(’ ’,NR) 1) ALL

  &.&.将汉字与拼音存放在不同的字段里,这里拼音有两个字段,其中有一个为同音字。

  REPL NR1 WITH ‘s’ SUBS(NR1,3) FOR “sh”$NR1

  &.&.为了照顾南方口音的人员使用,可将全部zh,ch,sh替换成z,c,s

  REPL NR1 WITH ‘c’ SUBS(NR1,3) FOR “ch”$NR1

  REPL NR1 WITH ‘z’ SUBS(NR1,3) FOR “zh”$NR1

  REPL NR2 WITH ‘s’ SUBS(NR2,3) FOR “sh”$NR2

  REPL NR2 WITH ‘c’ SUBS(NR2,3) FOR “ch”$NR2

  REPL NR2 WITH ‘z’ SUBS(NR2,3) FOR “zh”$NR2

  COPY TO PYZDK FIEL HZ,PY1,PY2 &.&.生成一个拼音查询数据库

  USE &.&.关闭打开的数据库

  ERASE ’B1.DBF’ &.&.删除生成的临过数据库

  在VFP中命令窗口中,执行上面这段程序系统将自动生成一个拼音查询库,并将这个数据库命名为PYZDK.DBF。

相关文章


SQLServer联机丛书:存储过程及其创建
SQLServer联机丛书:删除存储过程
SQLServer联机丛书:查看存储过程
调优日志切换(TuningLogSwitches)
用拼音输入法字典库实现同音字模糊查询
用VisualFoxPro5.0设计数据文件结构浏览器
在VFP5.0中实现中英文自动切换
用VisualFoxpro开发主从结构数据库系统
在VFP程序中创建工具条
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛