CN101082918A - 一种利用字母索引表查询电子词典单词的方法及其系统 - Google Patents

一种利用字母索引表查询电子词典单词的方法及其系统 Download PDF

Info

Publication number
CN101082918A
CN101082918A CN 200610083337 CN200610083337A CN101082918A CN 101082918 A CN101082918 A CN 101082918A CN 200610083337 CN200610083337 CN 200610083337 CN 200610083337 A CN200610083337 A CN 200610083337A CN 101082918 A CN101082918 A CN 101082918A
Authority
CN
China
Prior art keywords
word
index entry
index
sequence
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 200610083337
Other languages
English (en)
Other versions
CN100452048C (zh
Inventor
张后鼎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING SUNPLUS-EHUE TECHNOLOGY CO., LTD.
Sunplus Technology Co Ltd
Original Assignee
BEIJING BEIYANG ELECTRONIC TECHNOLOGY Co Ltd
Sunplus Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEIJING BEIYANG ELECTRONIC TECHNOLOGY Co Ltd, Sunplus Technology Co Ltd filed Critical BEIJING BEIYANG ELECTRONIC TECHNOLOGY Co Ltd
Priority to CNB2006100833379A priority Critical patent/CN100452048C/zh
Publication of CN101082918A publication Critical patent/CN101082918A/zh
Application granted granted Critical
Publication of CN100452048C publication Critical patent/CN100452048C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种利用字母索引表查询电子词典单词的系统及方法,该系统包括单词输入单元、缓存单元、存储了词典数据库的存储单元、索引项查询单元、单词查询单元和显示单元,先创建一树状字母索引表,树中每一节点为一索引项,每一索引项对应于一字母和一字母序列且记录有单词索引信息,非底层的索引项记录有下层索引项首地址;每一索引项对应字母序列为首的单词数大于设定值时,建立其下层索引项;依次读取输入字母序列中的一个字母,在字母索引表逐层查询,获取该输入字母序列对应的索引项,或者与前面部分字母序列对应的底层索引项;然后再根据获取的索引项中的单词索引信息从词典数据库中获取查询结果并显示。本发明可提高单词的查询速度。

Description

一种利用字母索引表查询电子词典单词的方法及其系统
技术领域
本发明涉及一种电子词典单词的快速查询方法及其系统。
背景技术
一般地,词典查询采用索引结构进行单词查询,即在用户输入单词的过程中通过单词的部分或全部内容(如前几个字母),在词典的索引中来查询单词的相关内容。
请参见图1,是现有技术电子词典索引数据结构示意图,其包括:词典数据库,存储有每个单词的数据;地址索引表,包含指向每个单词数据的地址。数据库中的单词数据和索引表中的地址是按相同顺序连续存储的。用户在输入单词后,采用折半查找法从地址索引表中取出一个单词的地址,依照该地址从词典数据库取出该单词的主题词,然后把取出的主题词与输入的字符串进行比较,判断是否是与输入字符串相同或最接近输入字符串的单词,若是则结束查询;否则按折半查找法继续查询。
这种查询方法的最大次数为log2N,N为词典数据库包含的单词总数。这样,即便我们输入很简单的单词也需要对整个单词数据进行多次重复查询后才能获得最终的查找结果。而且通常情况下,为了节省空间,词典中的单词数据都是经过压缩的,在取主题词进行比较时,需要先进行解压缩。这样在查询过程中需要经过多次解压缩动作。按该索引查询比较次数公式log2N,以N=100,000为例,则计算得到其解压次数为17次。因此,该现有查询方法实际上制约了单词的查询速度。
申请号为99123297的中国专利公开了一种使用快速查询索引结构的电子词典单词查询方法,它是在上述传统的索引结构基础上增加了一个二次索引结构,该二次索引结构中包含了单词前两个字母的排列组合,对于字母为一个或者两个的单词,只需要根据该二次索引结构即直接找到其对应的单词数据地址从而找到要查询的单词,提高了查询速度;对于字母数更多的单词,再在该二次索引结构查询结果的基础上,利用折半法进行查询。
然而,以不同字母起始的单词其分布是不均匀的,例如,以st和su开头的单词在一个10万词条的词典中均超过2000个,查询时的解压缩次数平均为11次。因此,由于不同起始字母的单词的密度不同,该方法的查询速度不均衡,对于起始字母相同的密度大的单词,查询时的重复查询和解压次数仍然偏多,进而影响了整体的查询速度。
此外,在电子词典系统内存资源十分紧张的情况下,可能无法为地址索引表提供足够的空间,即无法在内存中创建地址索引表。此时,要是按传统的查询方法,要查询单词的话,只能依序一个一个的对比,这实际是不可能实现的。而即使采用中国专利99123297公开的二级索引结构,由于查询到的第二层索引项仍然可能分布了很大的单词数,因此其查询速度也是不可以接受的。如何能够在资源紧张的情况下,提高其查询速度,使得可能实现单词查询功能,也是急待解决的一个问题。
发明内容
本发明要解决的技术问题是提供一种电子词典单词的快速查询方法,能够显著地提高查询速度。
为了解决上述技术问题,本发明提供了一种利用字母索引表查询电子词典单词的方法,包括以下步骤:
(a)根据词典数据库创建一个具有多层树状逻辑结构的字母索引表,树中每一节点为一索引项,每一索引项对应于一字母,同时还对应于从第一层索引项到该索引项的路径上所有索引项对应字母按序组成的一字母序列,每一索引项中记录有单词索引信息,非底层的索引项还记录有其下层索引项的首地址;
其中,当所述字母索引表中一索引项对应字母序列为首的单词数大于一设定值时,建立该索引项的下层索引项,其中至少包括在单词中实际存在的字母序列对应的各个索引项;
(b)依次读取用户输入字母序列中的一个字母,根据所述字母索引表逐层查询,获取与该输入字母序列对应的索引项,或者与该输入字母序列中前面部分字母序列对应的底层索引项;
(c)将步骤(b)获取的索引项对应的字母序列与输入单词比对,获取查询结果,其中,当该索引项对应的字母序列与输入字母序列相同时,则根据该索引项中记录的单词索引信息从词典数据库中获取对应单词的数据并显示该单词,否则,根据该索引项中记录的单词索引信息进行重复查找和比较,获取查询结果并显示。
进一步地,上述方法还可具有以下特点:所述步骤(a)中对一索引项建立下层索引项时,是建立一组26个索引项,按顺序分别对应26个字母a~z,且每一索引项占用相同的字节数;所述步骤(b)进一步分为以下步骤:
(b1)读取所述输入字母序列中的第一个字母,根据系统记录的字母索引表第一层索引项的首地址、该字母与字母a的偏移量和每一索引项占用的字节数,在字母索引表的第一层中找到对应的索引项;
(b2)判断当前找到的索引项是否已是底层索引项,如果是,执行步骤(c),否则执行步骤(b3);
(b3)判断所述输入字母序列的所有字母是否均已读取,如果是,则以最后一个字母对应的索引项为找到的索引项,执行步骤(c);否则,执行步骤(b4);
(b4)读取输入字母序列还未读取的字母中的第一个字母,根据其前一字母对应索引项中记录的下层索引项的首地址、该字母与字母a的偏移量和每一索引项占用的字节数,在该组索引项中找到该字母对应的索引项,然后返回步骤(b2)。
进一步地,上述方法还可具有以下特点:所述步骤(a)中单词数的设定值为64、128或256。
进一步地,上述方法还可具有以下特点:
所述步骤(a)中还根据词典数据库创建了一地址索引表,所述词典数据库中的单词数据和该地址索引表中的地址一一对应,且按同一顺序连续存储;且所述索引项记录的单词索引信息为单词序号,该单词序号是该索引项对应字母序列构成的单词的序号,或者是以该字母序列为首的单词中排序第一的单词的序号;
所述步骤(c)中,当步骤(b)获取的索引项对应的字母序列与输入字母序列相同时,则根据该索引项记录的单词序号在地址索引表中所对应的单词地址从词典数据库中获取对应单词的数据;否则,根据该索引项及其相邻的下一索引项中记录的单词序号,按折半查找法,利用所述地址索引表和词典数据库进行重复查找和对比,获取与所述输入字母序列相同或最接近的单词的数据。
进一步地,上述方法还可具有以下特点:
所述步骤(a)中还根据词典数据库创建了一地址索引表,所述词典数据库中的单词数据和该地址索引表中的地址一一对应,且按同一顺序连续存储;所述索引项记录的单词索引信息包括单词地址,该单词地址是该索引项对应字母序列所构成单词的地址,或者是以该字母序列为首的单词中排序第一的单词的地址;
所述步骤(c)中,当步骤b)获取的索引项对应的字母序列与输入字母序列相同,则根据该索引项记录的单词地址从词典数据库中获取对应单词的数据;否则,根据该索引项及其相邻下一索引项中记录的单词地址,按折半查找法,利用所述地址索引表和词典数据库进行重复查找和对比,获取与所述输入字母序列相同或最接近的单词的数据。
进一步地,上述方法还可具有以下特点:
所述索引项记录的单词索引信息包括单词地址,该单词地址是该索引项对应字母序列所构成单词的地址,或者是以该字母序列为首的单词中排序第一的单词的地址;
所述步骤(c)中,当步骤(b)获取的索引项对应的字母序列与输入字母序列相同,则根据该索引项记录的单词地址获取对应单词的数据;否则,以该索引项中记录的单词地址为起始地址,在词典数据库中向后逐一查找相应的单词数据并进行对比,以获取与输入字母序列相同或最接近的单词的数据。
进一步地,上述方法还可具有以下特点:所述词典数据库中保存的单词数据经过压缩处理,在所述步骤(c)中显示输入单词和将步骤(b)获取的索引项对应的字母序列与输入单词比对之前还包括解压缩处理。
本发明要解决的另一技术问题是提供一种电子词典单词的快速查询系统,能够显著地提高查询速度。
为了解决上述技术问题,本发明提供了一种利用字母索引表查询电子词典单词的系统,包括接收输入字母序列的单词输入单元,用于缓存该输入字母序列码值的缓存单元,存储了词典数据库的存储单元,单词查询单元,以及用于显示查询结果的显示单元,其特征在于,还包括索引项查询单元,其中:
所述存储单元还存储了根据该词典数据库创建的一字母索引表,该字母索引表具有多层树状逻辑结构,树中每一节点为一索引项,每一索引项对应于一字母,同时还对应于从第一层索引项到该索引项的路径上所有索引项对应字母按序组成的一字母序列,每一索引项中记录有单词索引信息,非底层的索引项还记录有其下层索引项的首地址;其中,当所述字母索引表中一索引项对应字母序列为首的单词数大于一设定值时,该索引项还包括一组下层索引项,其中至少包括在单词中实际存在的字母序列对应的各个索引项;
所述索引项查询单元用于根据缓存的输入字母序列,依次读取其中的一个字母,根据所述字母索引表逐层查询,获取与该输入字母序列对应的索引项,或者与该输入字母序列中前面部分字母序列对应的底层索引项,然后输出;
所述单词查询单元用于将索引项查询单元输出的索引项对应的字母序列与输入单词比对,获取单词查询结果,其中,如果该索引项对应的字母序列与输入字母序列相同,则根据该索引项中记录的单词索引信息从词典数据库中获取对应单词的数据,否则,根据该索引项中记录的单词索引信息进行重复查找和比较以获取查询结果。
进一步地,上述系统还可具有以下特点:所述存储单元中的字母索引表的逻辑结构为一多层的26叉树,每一索引项的下层索引项包括一组26个索引项,且按顺序分别对应26个字母a~z;所述索引项查询单元进一步包括读取子单元、查询子单元和判断子单元:
读取子单元,用于依次从所述输入字母序列中读取一个字母,如判断出所有字母均已读取过,则输出最后一个字母对应的索引项;否则,输出该读取的字母至查询子单元;
查询子单元,用于接收所述读取子单元输出的字母,根据系统记录的或前一字母对应索引项中记录的下层索引项的首地址、该字母与字母a的偏移量和每一索引项占用的字节数,获取该字母对应的索引项,并输出至判断子单元;
判断子单元,用于判断查询子单元所获取的索引项是否为底层索引项,如果是,则输出该索引项;否则,输出至读取子单元。
进一步地,上述系统还可具有以下特点:所述存储单元中还保存了一地址索引表,存储的词典数据库中的单词数据和该地址索引表中的地址一一对应,且按同一顺序连续存储;所述字母索引表中索引项记录的单词索引信息为单词序号,该单词序号是该索引项对应字母序列构成的单词的序号,或者是以该字母序列为首的单词中排序第一的单词的序号;
所述单词查询单元将索引项查询单元输出的索引项对应的字母序列与输入字母序列比对,如果该索引项对应的字母序列与输入字母序列相同,则根据该索引项记录的单词序号在地址索引表中所对应的单词地址从词典数据库中获取对应单词的数据;否则,根据该索引项及其相邻的下一索引项中记录的单词序号,按折半查找法,利用所述地址索引表和词典数据库进行重复查找和对比,以获取与所述输入字母序列相同或最接近的单词的数据。
进一步地,上述系统还可具有以下特点:所述存储单元中还保存了一地址索引表,存储的词典数据库中的单词数据和该地址索引表中的地址一一对应,且按同一顺序连续存储;且所述字母索引表中索引项记录的单词索引信息包括单词地址,该单词地址是该索引项对应字母序列所构成单词的地址,或者是以该字母序列为首的单词中排序第一的单词的地址;
所述单词查询单元将索引项查询单元输出的索引项对应的字母序列与输入字母序列比对,如果该索引项对应的字母序列与输入字母序列相同,则根据该索引项记录的单词地址获取对应单词的数据;否则,根据该索引项及其相邻的下一索引项中记录的单词地址,按折半查找法,利用所述地址索引表和词典数据库进行重复查找和对比,以获取与所述输入字母序列相同或最接近的单词的数据。
进一步地,上述系统还可具有以下特点:所述存储单元存储的字母索引表中记录的单词索引信息包括单词地址,该单词地址是该索引项对应字母序列所构成单词的地址,或者是以该字母序列为首的单词中排序第一的单词的地址;
所述单词查询单元将索引项查询单元输出的索引项对应的字母序列与输入字母序列比对,如果该索引项对应的字母序列与输入字母序列相同,则根据该索引项记录的单词地址获取对应单词的数据;否则,以该索引项中记录的单词地址为起始地址,在词典数据库中向后逐一查找相应的单词数据并进行对比,以获取与输入字母序列相同或最接近的单词的数据。
由上可知,本发明利用字母索引表,且根据单词分布密度的不同而动态的调整索引深度,在不同起始字母的单词分布不均匀的情况下仍能保持均衡的查询速度,并在此基础上降低了重复查询和解压的次数,极大的提高了查询的速度。并且,对于资源紧张无法创建地址索引表的环境下,也能够实现较快的单词查询。
附图说明
图1是现有技术电子词典索引数据结构示意图。
图2是本发明第一实施例查询系统的功能框图。
图3是本发明第一实施例索引数据结构的示意图。
图4是本发明第一实施例单词查询方法的流程图。
图5是采用本发明第一实施例方法的一应用实例查询过程的示意图。
图6是采用本发明第一实施例方法的另一应用实例查询过程的示意图。
图7是本发明第二实施例索引数据结构的示意图。
具体实施方式
第一实施例
图2是本实施例查询系统的功能框图,其包括:
单词输入单元:用于接收用户输入用于查询单词的字母序列并将其输出到缓存单元,该字母序列可能是一个完整的单词,也可能只是单词的前几个字母。
缓存单元:用于缓存输入字母序列中各字母的ASCII码。
存储单元:用于存储一电子词典数据库,对应于该数据库的一地址索引表,以及一字母索引表。
图3示出了索引数据结构的示意图。与现有技术一样,数据库中的单词数据和地址索引表中的地址一一对应,且按同一顺序连续存储,由地址索引表中的一地址即可找到数据库中同一序号的单词数据。而字母索引表是根据该词典数据库创建的,其逻辑结构为一多层的26叉树,请同时参照图6,树中的每一节点为一索引项,每一索引项对应于一字母,同时还对应于一个字母序列,该字母序列是由从第一层索引项到该索引项的路径上包含的所有索引项对应的字母按序组成的。每一索引项中都记录了一单词序号,非底层的索引项还记录有其下层索引项的首地址。
第一层索引项共有26个,按顺序分别对应26个字母a~z。为了保证查询速度的均衡,要求以每个索引项对应字母序列为首的单词数小于一设定值,如果大于该值,则需建立该索引项的下层索引项,每一索引项的下层索引项包括一组26个索引项,也是按顺序分别对应26个字母a~z。索引项间单词最大个数设定得越小则索引速度越快,但是其占用的空间也会越大。该设定值较佳取64、128或256,本实施例取128,经验证是比较合理的。
任一字母序列都可以得到其组成字母的ASCII码字符串。在词典数据库中,单词就是按其ASCII码字符串来排序的。而索引项记录的单词序号即为其对应字母序列构成的单词的序号,或以该字母序列为首的单词中排序第一的单词的序号。
索引项查询单元:所述索引项查询单元用于根据缓存的输入字母序列,依次读取其中的一个字母,根据所述字母索引表逐层查询,获取与该输入字母序列对应的索引项,或者与该输入字母序列中前面部分字母序列对应的底层索引项,然后输出到单词查询单元;
该单元进一步包括以下子单元:
读取子单元,依序每次从所述输入字母序列中读取一个字母,如发现所有字母均已读取过,则输出最后一个字母对应的索引项;否则,将此次读取的字母交查询子单元处理。
查询子单元,用于对此次读出的字母,根据其系统记录的或前一字母对应索引项中记录的其下层索引项的首地址、该字母与字母a的偏移量和每一索引项占用的字节数,在该组索引项中找到该字母对应的索引项,然后交判断子单元处理;
判断子单元,用于判断当前找到的索引项是否已是底层索引项,如果是,则输出该索引项;否则,交读取子单元继续处理。
单词查询单元:用于将索引项查询单元输出的索引项对应的字母序列与输入单词比对,获取单词查询结果。其中,如果索引项对应的字母序列与输入字母序列相同,直接按该索引项记录的单词序号所对应的单词地址从词典数据库中获取对应单词的数据;否则,根据该索引项及其相邻的下一索引项记录的单词序号,按折半查找法利用所述地址索引表和词典数据库进行重复查找和对比,直到找到与输入字母序列相同或最接近的单词的数据。
显示单元:用于根据查到的单词数据,显示相应的单词和相关内容。
索引项查询单元和单词查询单元所执行的具体查询操作将在流程中详细介绍。
基于以上系统,本实施例单词查询方法如图4所示,包括以下步骤:
步骤1:接收用户输入的字母序列;
步骤2:读取输入字母序列中的第一个字母,根据字母索引表第一层索引项的首地址,在字母索引表的第一层中找到对应的索引项;
本实施例中,每一个索引项占用的字节数相同,因此有:
某字母对应的索引项的地址=该字母所在的一组索引项的首地址+(该小写或大写字母的ASCII码值-字母a或A的ASCII码值)×一个索引项占用的字节数。
式中的ASCII码值也可以用其它的码值来代替,只要能正确计算出该字母和字母a之间的偏移量即可。根据该地址即可找到对应的索引项。字母索引表第一层索引项的首地址可以由系统在生成字母索引表时加以记录,也可以认为该字母索引表存在第0层节点,该节点对应的索引项记录了第一层索引项的首地址,但不对应于任何一个字母。
步骤3:判断当前找到的索引项是否已是底层索引项,如果是,执行步骤4,否则执行步骤5;
步骤4,如此时输入字母序列的所有字母已读取,则根据该底层索引项记录的单词序号从地址索引表中找到对应的地址,由该地址找到对应单词的数据,否则,根据该底层索引项记录的单词序号和该底层索引项相邻的下一索引项记录的单词序号,按折半查找法找到对应单词的数据,将单词数据解压缩后向用户显示查询结果,可能是与输入字母序列相同的单词或与其最接近的单词或查找不到的提示,结束;
在本文中,某一层中同组的索引项是根据其对应字母按从小到大的顺序排列的,各组索引项之间则是根据其上一层索引项对应字母按从小到小的顺序排列的。因此,对于对应字母为a~y的索引项,其相邻的下一索引项均为同组的索引项,而对应字母为z的索引项,其相邻的下一索引项则为下一组索引项中的第一个索引项,本实施例即对应字母为a的索引项。
按折半查找法查找时,从两个单词序号开始,假定为单词序号A和单词序号B,其中单词序号B较大,先计算出位于该两个单词序号中间的单词序号C(将两者相加除以2即可),然后通过该单词序号C对应的地址找到相应的单词数据,将输入字母序列与解压缩后的该单词数据进行比较,如两者相等则输出查询到的单词;如输入字母序列的ASCII码字符串大于该单词的ASCII码字符串,则对在单词序号C和单词序号B之间的单词进行下一次的查询;如输入字母序列的ASCII码字符串小于该单词的ASCII码字符串,则对在单词序号A和单词序号C之间的单词进行下一次的查询,直到查到相应的单词为止,如果找不到,可以输出最接近的单词作为查询结果或者显示单词不存在。确定最接近的单词时可以采用现有的各种算法,不是本发明要限定的内容。
步骤5,判断输入字母序列的所有字母是否均已读取,如果是,执行步骤7,否则,执行步骤6;
步骤6,读取输入字母序列还未读取的字母中的第一个字母,根据其前一字母对应索引项中记录的其下层索引项的首地址,在该组索引项中找到该字母对应的索引项,然后返回步骤3;
步骤7,根据找到的最后一个索引项记录的单词序号,从地址索引表中找到对应的地址,然后根据该地址即可找到要查询的单词数据,解压缩后将查询结果显示给用户,结束。
因为在地址索引表中每个地址占用的字节数是相同的,根据索引项中记录的单词序号与初始序号的偏移可以容易地找到在地址索引表中对应的地址,具体地:某个单词序号对应的地址=地址索引表的首地址+(该单词序号-单词的初始序号)×一个地址占用的字节数。
下面再以几个查询的实例对本发明进行说明。
请参考图5,是一个实例的查询过程的示意图。图中字母索引表中给出了一级索引a至z以及对a和b的二级索引示例。每个索引项除了对应的字母外,还记录了单词序号和其下层索引项的首地址。只要以某一索引项对应字母序列为首的单词个数超过128,则为该索引项创建一组共26个下层索引项。下面描述一下输入字母序列为aa时的查询过程:
先取出输入单词的第一个字母a,在字母索引表的第一层找到字母a对应的索引项,发现以a字母开头的单词还有下一级索引,且输入单词未结束,于是取出输入单词的第二个字母a,在a的下一级索引中找到第一个索引项,此时输入单词已经结束,因此直接取出该索引项中单词序号,根据此序号对应的地址,即单词3的地址从词典数据库中取出单词aa的数据,解压缩后显示查询结果。
图6示出了用26叉树所表示的字母索引表的逻辑结构,其中每一节点对应一索引项。例如,要查找单词star,可以沿着26叉树读取每一个字母对应的索引项。当查到第4个字母r后,输入字母已经结束,则直接从字母r对应的索引项中读取单词star的序号,再通过该序号对应的地址读取词典数据库中该单词的相关内容。
如果是查询单词stare,而且在查询字母r后没有下一级索引,则表明以“star”为首的单词数未超过128,因此,将r对应索引项中的单词序号作为起始单词序号,并将r的下一索引项(即字母s对应的索引项)中的单词序号作为结束单词序号进行折半查找,这样,由于该两个单词序号之间的单词最大个数是128,因此根据折半查找公式log2128=7,其最大查找次数不超过7次。因此,相对于现有技术的固定折半查找方法来看,本发明的动态索引查找方法不仅大大降低了查找平均次数,而且即使对于不同首字母开头但单词量不同的情况,也能够做到查询速度的均衡,且重复查询和解压缩次数大大减少。
为了更加清楚本发明之优势所在,再将本发明与中国专利99123297做一对比。中国专利99123297是在针对词典数据库索引地址折半查找的基础上增加一个二级索引结构,如果以该二级索引结构对应的字母为首的单词过多,则仍然无法避免因为折半查询而出现的重复查询和解压的问题。
假定词典数据库的词汇量均为100,000,请参见表1对几个单词的查询次数的统计。
表1
  不同字母数单词     现有技术(次)     本发明(次)
    a 1 1
    aa 2 2
stare 3×log2 (100000/702)+2=26实际上,st为首的单词超过2000个,实际次数为:3×log2 (2000)+2=35 log2 (128)+4=11前四个字母已有索引
addressing  8×log2 (100000/702)+2=66实际上,ad为首的单词超过600个,实际次数为:8×log2 (600)+2=82 6×log2 (128)+4=46前四个字母已有索引
由此可知,本发明查询方法是先根据输入字母序列中的字母逐次找到对应层次的索引项,如果包含某索引项对应字母序列的单词个数超过一个设定的值,如128个,则为该索引项建立一组下层索引,依次类推。其索引深度根据单词分布密度的不同而动态调整,实现了在不同起始字母的单词分布不均匀的情况下仍能保持均衡的查询速度,降低了重复查询和解压的次数,极大的提高了查询的速度,特别适用于CPU速度较低的产品。
在上述实施例的基础上还可以有各种变换。
例如,在另一实施例中,在每一索引项的记录中,用单词地址替换原实施例中的单词序号,该单词地址即为该索引项对应字母序列所构成单词的地址,或者是以该字母序列为首的单词中排序第一的单词的地址。这样,在查找到与输入字母序列对应的索引项后,就可以直接根据该索引项记录的单词地址找到对应的单词数据,或者根据该索引项及其相邻下一索引项记录的两个单词地址,根据地址索引表和词典数据库采用折半查找法找到对应的单词数据。这种方式不用再根据单词序号去找对应的地址,查询更为快速。不过,单词序号对于单词查询也有其作用,比如可以提供查找当前单词的上一个单词或下一个单词的功能,等等。当然,在其它实施例中,按上述规则在索引项中同时记录单词序号和单词地址也是可以的。
例如,在另一实施例中,字母索引表中一个索引项的下层索引项也可以小于26个,因为有不少组合是不存在的,可以只包含单词中实际存在的字母序列对应的索引项,这时需要在索引项中记录对应的字母,如果查询索引项时,还没有查询到底层索引项就找不到对应索引项,可以根据最后查到的该索引项中的单词序号或单词地址,从数据库中找出最接近的单词或显示单词不存在即可。这样可以节约一些存储空间。但是,在确定某字母对应的索引项时就必须一个一个索引项的查找,会降低查询的速度。
例如,在另一实施例中,电子词典的数据也可以是不压缩的,显然,采用本发明方法同样可以提高查询速度,降低查询次数。
第二实施例
在电子词典系统内存资源十分紧张的情况下,可能无法为地址索引表提供足够的空间,即无法在内存中创建地址索引表。此时,要是按传统的查询方法,要查询单词的话,只能依序一个一个的对比,这实际是不可能实现的。而即使采用中国专利99123297公开的二级索引结构,由于查询到的第二层索引项仍然可能分布了很大的单词数,因此其查询速度也是不可以接受的,而采用本发明的字母索引表,因为每一索引项分布的单词数是均衡的,因而使得查询成为可能,即在因内存资源不足而不创建地址索引表的同等条件下,本发明的查询速度远远超过了上述现有的方法。
本实施例查询系统的功能框图包含的功能单元与第一实施例是完全一样的,包括单词输入单元、缓存单元、存储单元、索引项查询单元、单词查询单元和显示单元。其差别在于:
存储单元中没有存储地址索引表,而存储的字母索引表与第一实施例基本是相同的,差别仅在于每一索引项记录的信息增加了单词地址,即包括:单词序号、单词地址和下层索引项首地址。其中的单词地址即为该索引项对应字母序列所构成单词的地址,或者是以该字母序列为首的单词中排序第一的单词的地址。单词序号是可选的。
单词查询单元用于查询出所要的单词,如果索引项对应的字母序列与输入字母序列相同,直接按该索引项记录的单词地址找到所要的单词数据;否则,从该索引项记录的单词地址开始逐一查找相应的单词数据,将其解压缩后进行对比,直到找到与输入字母序列相同的单词,找不到相同单词时,可以显示最接近的单词或者显示单词不存在。
由于单词数据有长有短,因此每一单词的起始地址并不能够根据单词序号进行准确推算,如果采用折半查找法,则折半得到的地址可能并非单词的起始地址,从而出错。
其它的单元与第一实施例都是相同的,这里不再赘述。其索引数据结构如图7所示,与第一实施例相比,少了地址索引表。
基于以上系统,本实施例单词查询方法的步骤与第一实施例基本相同,需作的修改为:
将原步骤4修改为:以该最后一个索引项记录的单词地址为起始地址,在词典数据库中向后逐一查找相应的单词数据,将其解压缩后进行对比,直到找到与输入字母序列相同的单词并显示,找不到相同的单词时,显示最接近的单词或显示单词不存在,结束。
将原步骤7修改为:根据找到的最后一个索引项记录的单词地址,直接找到要查询的单词数据,解压缩后将查询到的单词显示给用户,结束。
其它的步骤与第一实施例完全相同,这里不再赘述。总的来说,第二实施例与第一实施例在索引项查询阶段是完全相同的,只是在后续的单词查找阶段有所不同。
同样,该实施例也可以做一些变换,如字母索引表中一个索引项的下层索引项也可以小于26个,只包含单词中实际存在的字母序列对应的索引项。或者,电子词典的数据也可以是不压缩的,等等。

Claims (12)

1、一种利用字母索引表查询电子词典单词的方法,包括以下步骤:
(a)根据词典数据库创建一个具有多层树状逻辑结构的字母索引表,树中每一节点为一索引项,每一索引项对应于一字母,同时还对应于从第一层索引项到该索引项的路径上所有索引项对应字母按序组成的一字母序列,每一索引项中记录有单词索引信息,非底层的索引项还记录有其下层索引项的首地址;
其中,当所述字母索引表中一索引项对应字母序列为首的单词数大于一设定值时,建立该索引项的下层索引项,其中至少包括在单词中实际存在的字母序列对应的各个索引项;
(b)依次读取用户输入字母序列中的一个字母,根据所述字母索引表逐层查询,获取与该输入字母序列对应的索引项,或者与该输入字母序列中前面部分字母序列对应的底层索引项;
(c)将步骤(b)获取的索引项对应的字母序列与输入单词比对,获取查询结果,其中,当该索引项对应的字母序列与输入字母序列相同时,则根据该索引项中记录的单词索引信息从词典数据库中获取对应单词的数据并显示该单词,否则,根据该索引项中记录的单词索引信息进行重复查找和比较,获取查询结果并显示。
2、如权利要求1所述的方法,其特征在于,所述步骤(a)中对一索引项建立下层索引项时,是建立一组26个索引项,按顺序分别对应26个字母a~z,且每一索引项占用相同的字节数;所述步骤(b)进一步分为以下步骤:
(b1)读取所述输入字母序列中的第一个字母,根据系统记录的字母索引表第一层索引项的首地址、该字母与字母a的偏移量和每一索引项占用的字节数,在字母索引表的第一层中找到对应的索引项;
(b2)判断当前找到的索引项是否已是底层索引项,如果是,执行步骤(c),否则执行步骤(b3);
(b3)判断所述输入字母序列的所有字母是否均已读取,如果是,则以最后一个字母对应的索引项为找到的索引项,执行步骤(c);否则,执行步骤(b4);
(b4)读取输入字母序列还未读取的字母中的第一个字母,根据其前一字母对应索引项中记录的下层索引项的首地址、该字母与字母a的偏移量和每一索引项占用的字节数,在该组索引项中找到该字母对应的索引项,然后返回步骤(b2)。
3、如权利要求1所述的方法,其特征在于,所述步骤(a)中单词数的设定值为64、128或256。
4、如权利要求1所述的方法,其特征在于:
所述步骤(a)中还根据词典数据库创建了一地址索引表,所述词典数据库中的单词数据和该地址索引表中的地址一一对应,且按同一顺序连续存储;且所述索引项记录的单词索引信息为单词序号,该单词序号是该索引项对应字母序列构成的单词的序号,或者是以该字母序列为首的单词中排序第一的单词的序号;
所述步骤(c)中,当步骤(b)获取的索引项对应的字母序列与输入字母序列相同时,则根据该索引项记录的单词序号在地址索引表中所对应的单词地址从词典数据库中获取对应单词的数据;否则,根据该索引项及其相邻的下一索引项中记录的单词序号,按折半查找法,利用所述地址索引表和词典数据库进行重复查找和对比,获取与所述输入字母序列相同或最接近的单词的数据。
5、如权利要求1所述的方法,其特征在于:
所述步骤(a)中还根据词典数据库创建了一地址索引表,所述词典数据库中的单词数据和该地址索引表中的地址一一对应,且按同一顺序连续存储;所述索引项记录的单词索引信息包括单词地址,该单词地址是该索引项对应字母序列所构成单词的地址,或者是以该字母序列为首的单词中排序第一的单词的地址;
所述步骤(c)中,当步骤b)获取的索引项对应的字母序列与输入字母序列相同,则根据该索引项记录的单词地址从词典数据库中获取对应单词的数据;否则,根据该索引项及其相邻下一索引项中记录的单词地址,按折半查找法,利用所述地址索引表和词典数据库进行重复查找和对比,获取与所述输入字母序列相同或最接近的单词的数据。
6、如权利要求1所述的方法,其特征在于:
所述索引项记录的单词索引信息包括单词地址,该单词地址是该索引项对应字母序列所构成单词的地址,或者是以该字母序列为首的单词中排序第一的单词的地址;
所述步骤(c)中,当步骤(b)获取的索引项对应的字母序列与输入字母序列相同,则根据该索引项记录的单词地址获取对应单词的数据;否则,以该索引项中记录的单词地址为起始地址,在词典数据库中向后逐一查找相应的单词数据并进行对比,以获取与输入字母序列相同或最接近的单词的数据。
7、如权利要求1至6中任一权利要求所述的方法,其特征在于,所述词典数据库中保存的单词数据经过压缩处理,在所述步骤(c)中显示输入单词和将步骤(b)获取的索引项对应的字母序列与输入单词比对之前还包括解压缩处理。
8、一种利用字母索引表查询电子词典单词的系统,包括接收输入字母序列的单词输入单元,用于缓存该输入字母序列码值的缓存单元,存储了词典数据库的存储单元,单词查询单元,以及用于显示查询结果的显示单元,其特征在于,还包括索引项查询单元,其中:
所述存储单元还存储了根据该词典数据库创建的一字母索引表,该字母索引表具有多层树状逻辑结构,树中每一节点为一索引项,每一索引项对应于一字母,同时还对应于从第一层索引项到该索引项的路径上所有索引项对应字母按序组成的一字母序列,每一索引项中记录有单词索引信息,非底层的索引项还记录有其下层索引项的首地址;其中,当所述字母索引表中一索引项对应字母序列为首的单词数大于一设定值时,该索引项还包括一组下层索引项,其中至少包括在单词中实际存在的字母序列对应的各个索引项;
所述索引项查询单元用于根据缓存的输入字母序列,依次读取其中的一个字母,根据所述字母索引表逐层查询,获取与该输入字母序列对应的索引项,或者与该输入字母序列中前面部分字母序列对应的底层索引项,然后输出;
所述单词查询单元用于将索引项查询单元输出的索引项对应的字母序列与输入单词比对,获取单词查询结果,其中,如果该索引项对应的字母序列与输入字母序列相同,则根据该索引项中记录的单词索引信息从词典数据库中获取对应单词的数据,否则,根据该索引项中记录的单词索引信息进行重复查找和比较以获取查询结果。
9、如权利要求8所述的系统,其特征在于,所述存储单元中的字母索引表的逻辑结构为一多层的26叉树,每一索引项的下层索引项包括一组26个索引项,且按顺序分别对应26个字母a~z;所述索引项查询单元进一步包括读取子单元、查询子单元和判断子单元:
读取子单元,用于依次从所述输入字母序列中读取一个字母,如判断出所有字母均已读取过,则输出最后一个字母对应的索引项;否则,输出该读取的字母至查询子单元;
查询子单元,用于接收所述读取子单元输出的字母,根据系统记录的或前一字母对应索引项中记录的下层索引项的首地址、该字母与字母a的偏移量和每一索引项占用的字节数,获取该字母对应的索引项,并输出至判断子单元;
判断子单元,用于判断查询子单元所获取的索引项是否为底层索引项,如果是,则输出该索引项;否则,输出至读取子单元。
10、如权利要求8所述的系统,其特征在于:所述存储单元中还保存了一地址索引表,存储的词典数据库中的单词数据和该地址索引表中的地址一一对应,且按同一顺序连续存储;所述字母索引表中索引项记录的单词索引信息为单词序号,该单词序号是该索引项对应字母序列构成的单词的序号,或者是以该字母序列为首的单词中排序第一的单词的序号;
所述单词查询单元将索引项查询单元输出的索引项对应的字母序列与输入字母序列比对,如果该索引项对应的字母序列与输入字母序列相同,则根据该索引项记录的单词序号在地址索引表中所对应的单词地址从词典数据库中获取对应单词的数据;否则,根据该索引项及其相邻的下一索引项中记录的单词序号,按折半查找法,利用所述地址索引表和词典数据库进行重复查找和对比,以获取与所述输入字母序列相同或最接近的单词的数据。
11、如权利要求8所述的系统,其特征在于:所述存储单元中还保存了一地址索引表,存储的词典数据库中的单词数据和该地址索引表中的地址一一对应,且按同一顺序连续存储;且所述字母索引表中索引项记录的单词索引信息包括单词地址,该单词地址是该索引项对应字母序列所构成单词的地址,或者是以该字母序列为首的单词中排序第一的单词的地址;
所述单词查询单元将索引项查询单元输出的索引项对应的字母序列与输入字母序列比对,如果该索引项对应的字母序列与输入字母序列相同,则根据该索引项记录的单词地址获取对应单词的数据;否则,根据该索引项及其相邻的下一索引项中记录的单词地址,按折半查找法,利用所述地址索引表和词典数据库进行重复查找和对比,以获取与所述输入字母序列相同或最接近的单词的数据。
12、如权利要求8所述的系统,其特征在于:所述存储单元存储的字母索引表中记录的单词索引信息包括单词地址,该单词地址是该索引项对应字母序列所构成单词的地址,或者是以该字母序列为首的单词中排序第一的单词的地址;
所述单词查询单元将索引项查询单元输出的索引项对应的字母序列与输入字母序列比对,如果该索引项对应的字母序列与输入字母序列相同,则根据该索引项记录的单词地址获取对应单词的数据;否则,以该索引项中记录的单词地址为起始地址,在词典数据库中向后逐一查找相应的单词数据并进行对比,以获取与输入字母序列相同或最接近的单词的数据。
CNB2006100833379A 2006-06-02 2006-06-02 一种利用字母索引表查询电子词典单词的方法及其系统 Expired - Fee Related CN100452048C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006100833379A CN100452048C (zh) 2006-06-02 2006-06-02 一种利用字母索引表查询电子词典单词的方法及其系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006100833379A CN100452048C (zh) 2006-06-02 2006-06-02 一种利用字母索引表查询电子词典单词的方法及其系统

Publications (2)

Publication Number Publication Date
CN101082918A true CN101082918A (zh) 2007-12-05
CN100452048C CN100452048C (zh) 2009-01-14

Family

ID=38912492

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100833379A Expired - Fee Related CN100452048C (zh) 2006-06-02 2006-06-02 一种利用字母索引表查询电子词典单词的方法及其系统

Country Status (1)

Country Link
CN (1) CN100452048C (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101251848B (zh) * 2008-04-14 2010-06-09 中山大学 一种电子词典的快速单词查询系统
CN102207935A (zh) * 2010-03-30 2011-10-05 国际商业机器公司 用于创建索引的方法和系统
CN102591894A (zh) * 2011-01-04 2012-07-18 宏碁股份有限公司 电子装置及其有序数据的搜寻方法
CN105824804A (zh) * 2016-03-31 2016-08-03 长安大学 基于词库的英语拼写纠错工具和方法
CN107688567A (zh) * 2016-08-03 2018-02-13 腾讯科技(深圳)有限公司 一种索引存储方法及相关装置
CN109165331A (zh) * 2018-08-20 2019-01-08 南京师范大学 一种英文地名的索引建立方法及其查询方法和装置
CN110019221A (zh) * 2017-12-18 2019-07-16 厦门本能管家科技有限公司 一种内存映像型数据库系统
CN112559521A (zh) * 2020-12-11 2021-03-26 广州海量数据库技术有限公司 话单查找方法及系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727499B (zh) * 2010-01-07 2012-08-15 广东国笔科技股份有限公司 一种存储单词库、及搜索单词的方法及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1110002C (zh) * 1998-09-29 2003-05-28 英业达股份有限公司 提高单词辨识率系统与方法
CN1402158A (zh) * 2001-08-17 2003-03-12 无敌科技股份有限公司 电子字典的字/词查询方法
CN1241138C (zh) * 2002-11-20 2006-02-08 金宝电子工业股份有限公司 电子字典的查询次数累加记录与显示的方法及其装置

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101251848B (zh) * 2008-04-14 2010-06-09 中山大学 一种电子词典的快速单词查询系统
CN102207935A (zh) * 2010-03-30 2011-10-05 国际商业机器公司 用于创建索引的方法和系统
US8892566B2 (en) 2010-03-30 2014-11-18 International Business Machines Corporation Creating indexes for databases
CN102591894A (zh) * 2011-01-04 2012-07-18 宏碁股份有限公司 电子装置及其有序数据的搜寻方法
CN105824804A (zh) * 2016-03-31 2016-08-03 长安大学 基于词库的英语拼写纠错工具和方法
CN107688567A (zh) * 2016-08-03 2018-02-13 腾讯科技(深圳)有限公司 一种索引存储方法及相关装置
CN107688567B (zh) * 2016-08-03 2021-02-09 腾讯科技(深圳)有限公司 一种索引存储方法及相关装置
CN110019221A (zh) * 2017-12-18 2019-07-16 厦门本能管家科技有限公司 一种内存映像型数据库系统
CN109165331A (zh) * 2018-08-20 2019-01-08 南京师范大学 一种英文地名的索引建立方法及其查询方法和装置
CN112559521A (zh) * 2020-12-11 2021-03-26 广州海量数据库技术有限公司 话单查找方法及系统

Also Published As

Publication number Publication date
CN100452048C (zh) 2009-01-14

Similar Documents

Publication Publication Date Title
CN100452048C (zh) 一种利用字母索引表查询电子词典单词的方法及其系统
US7536399B2 (en) Data compression method, program, and apparatus to allow coding by detecting a repetition of a matching character string
US5592667A (en) Method of storing compressed data for accelerated interrogation
CN106326475B (zh) 一种高效的静态哈希表实现方法及系统
CN109325032B (zh) 一种索引数据存储及检索方法、装置及存储介质
US7062499B2 (en) Enhanced multiway radix tree and related methods
CN102810096A (zh) 一种基于单字索引系统的检索方法和装置
CN101079060A (zh) 一种中文输入法简拼实现方法和系统
US20140101150A1 (en) Efficient high performance scalable pipelined searching method using variable stride multibit tries
CN102456001A (zh) 错别字的检查方法和装置
JP2001331509A (ja) リレーショナルデータベース処理装置、リレーショナルデータベースの処理方法及びリレーショナルデータベースの処理プログラムを記録したコンピュータ読み取り可能な記録媒体
JPH09245043A (ja) 情報検索装置
CN1144143C (zh) 使用快速查询索引结构的电子字典单词查询方法
US20040044683A1 (en) Data compiling method
CN101739142A (zh) 五笔输入系统及方法
CN101251848B (zh) 一种电子词典的快速单词查询系统
CN110457531A (zh) 一种基于OpenMP的并行字符串查询方法
CN114036371A (zh) 搜索词推荐方法、装置、设备和计算机可读存储介质
Kulalvaimozhi et al. Performance analysis of sorting algorithm
JP2001022766A (ja) 多次元データベースの高速処理方法および装置
CN106933928A (zh) 基于外部数据文件的任务存储方法及装置
Zaidov Binary search algorithm of e-education based on modern technologies
Wang et al. Random filter and its analysis
US9009200B1 (en) Method of searching text based on two computer hardware processing properties: indirect memory addressing and ASCII encoding
KR100745292B1 (ko) 전자사전 검색 시스템

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: BEIJING SUNPLUS EHUE TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: BEIJING BEIYANG ELECTRONIC TECHNOLOGY CO., LTD.

Effective date: 20140317

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20140317

Address after: Science and Industry Park, Taiwan, Hsinchu, China, No. 19

Patentee after: Lingyang Science and Technology Co., Ltd.

Patentee after: BEIJING SUNPLUS-EHUE TECHNOLOGY CO., LTD.

Address before: Science and Industry Park, Taiwan, Hsinchu, China, No. 19

Patentee before: Lingyang Science and Technology Co., Ltd.

Patentee before: Beijing Beiyang Electronic Technology Co., Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090114

Termination date: 20170602