用拼音输入法字典库实现同音字模糊查询
在各种应用管理系统的开发中,一般都会实现各种查询功能。如何准确快速地找到符合条件的记录是实现各种查询功能的关键。在系统的实际开发过程中,查询功能一般是通过比较判断字符来实现的。在开发一个人事管理系统的过程中,系统应该有一种新的查询方式,即只要知道一个人名字的读音,但不知道每个单词的具体写法,就可以通过搜索数据库,显示所有符合这个读音的记录内容。由于汉字中存在大量的同音字,使用常用的字符比对方法,比如搜索一个叫“李晓军”的人,在数据库中找不到名为“李晓军”的数据,使用常用的查询方法无法实现同音字的查询功能。为了解决同音字的模糊查询问题,作者借用了WINDOWS系统下的输入法生成器,从系统中的拼音输入法词典库中生成一个拼音查询词典库。利用这个拼音查询词典库,在VFP数据库管理系统编写的人事管理系统中很容易实现基于发音的模糊查询功能。具体思路如下:
首先要生成一个拼音字典来查询数据库。
选择WINDOWS系统开始-程序-附件-输入法生成器,进入输入法生成器窗口,用鼠标点击倒页框,点击打开文件按钮,选择WINPY。MB文件在硬盘WINDOWS\SYSTEM文件夹下,输入C:\WINPY。TXT在原码表文件中,输入完毕后点击反转换。此时系统会对整个拼写词典进行转换,最后会生成一个纯文本文件。使用此纯文本。
第二,进入VFP系统,以ZH的身份写一个生成程序命令。PRG
该计划的内容如下:
creatable B1(NR C(60),Hz C (2),Py1C (12),Py2C (12))&创建一个临时数据库
使用B1 &&打开生成的数据库
来自C:\WINPY的APPE。TXT SDF
& &追加字典代码文件WINPY的内容。将输入法生成器生成的TXT文件保存到数据库中。
ASC的DELE(SUBS(NR,3,1)) >=128
& &删除数据库中所有的短语内容,只留下RECN的单字DELE()< 13 & &删除数据库中编码库的头文件。
打包并清除标记为删除的记录。
带SUBS(NR,1,2)的REPL HZ,带SUBS(NR,3,AT(',NR)-2)的PY1
PY2和SUBS(NR,AT(',NR)+1) ALL
& &将汉字和拼音分字段存储,其中拼音有两个字段,其中一个是同音字。
REPL NR1,带有“sh”的“s”+SUBS(NR1,3)$ NR1
& &为了照顾南方口音的人,zh,ch,sh都可以换成z,c,s。
REPL NR1,带有“ch”的“c”+SUBS(NR1,3)$ NR1
REPL NR1,带有“zh”的“z”+SUBS(NR1,3)$ NR1
REPL NR2,带有“sh”的“s”+SUBS(NR2,3)$ NR2
REPL NR2,带有代表“ch”的“c”+SUBS(NR2,3)$ NR2
REPL NR2,带有“zh”的“z”+SUBS(NR2,3)$ NR2
复制pyzdk fielhz,py1,py2 & &生成拼音查询数据库。
使用并关闭打开的数据库
擦除B1。DBF & &删除生成的临时数据库。
在VFP的命令窗口中,执行上述程序的系统将自动生成一个拼音查询数据库,并将该数据库命名为PYZDK。数据文件
位律师回复
0条评论