专利名称:一种适用于移动设备的电子词典词库结构的利记博彩app
技术领域:
本发明涉及一种数据库技术领域,尤其涉及手机等移动设备的电子词典的词库 结构。
技术背景目前大多数电子词典的词库以单词词头作为索引,采用定长的索引结构。其逻 辑结构如附图l所示。搜索单词时采用二分搜索的方法在索引内进行查找,査找到 目标单词后便从解释信息区内读出相应的单词解释返回给用户。由于采用二分搜索,因此每个索引块必须是等长的结构。设单词的总个数为n,第i个(1^^ )单词 的长度为/,,每个索引单元还包含指向解释信息块的指针,设指针的长度为/p则 块长度的取值必须为maX(/,)+/p,l^/《",因此存在巨大的空间浪费。由于上述索引结构带来较大的空间浪费,索引的数据量比较大,手机等移动设 备内存极其有限,无法将整个索引放到内存中。因此搜索时必须访问放置在外存中 的索引,采用二分法在外存索引中进行查找匹配。因此査询速度较慢。当词库的规 模达到一定程度时,这种结构的词库结构的搜索效率会快速降低。在有些移动设备开发环境下,例如J2ME下,访问外存文件时只支持文件指针 从文件头到文件尾的单向移动。这种情况下,则无法在外存文件进行二分査找,因 为二分搜索时需要在整个文件范围内大范围地来回移动指针。因此无法在这种移动 设备开发环境中采用上述的索引结构。 发明内容本发明的目的在于克服现有技术的不同,提出了一种空间利用率高、简单有效 的索引结构,以满足手机等处理能力和内存容量都十分有限的移动设备的应用要求。 本发明的目的通过以下技术方案予以实现整个词库由第一级索引、第二级索引和信息层组成。词库的总体逻辑结构如图 2所示。所述的信息层由单词的词头和音标、解释、例句等所有最终展现给用户的信息 组成。各信息层单元按照字典顺序排放。如果词库太大,可以将信息层根据首字母 分成多个文件。即将所有以"a"开头的单词字典顺序存放在同一个文件中,将所有 以"b"开头的单词字典顺序存放在另一个文件中,依此类推。由于手机等移动设备的处理能力极为有限,在实践中发现使用J2ME开发的手机软件在访问大文件时, 定位到文件中部或尾部时需要耗费较长的时间,最后导致査找单词时延时太长,甚 至达到4、 5秒,无法满足实用要求。将信息层按首字母进行分割后,整个信息层被 分成26个小文件,查询速度得到明显提升,查询时间縮短到0.2秒以内。所述的第二级索引的索引单元以单词词头的开头若干个字母组成和指向信息层 的指针组成, 一般情况下取3。例如单词"abandon"和单词"abandoned"的前3 个字母为"aba",它们在第二层索引中的索引单元则为"aba",该单元的指针指 向信息层的"abandon"处。而由于"abandoned"和单词"abandon"的前3个字母 相同,所以在第二层索引中不再有新的索引项指向"abandoned"。这是因为第二层 索引中不包含字母序列相同的索引项,以减少索引数据量,节省存储空间,以便在 程序运行时把整个索引加载入有限的内存。若单词长度不足3,则可用空格填充, 例如单词"by"的索引单位可以为"by "。第二级索引中的索引单位亦是按照字典 顺序排列。所述的第一层索引的索引单元由单词的首字符和指向第二级索引的指针组成, 一般情况下由"a" ~ "z"共26个字母组成,它们按照字典顺序排列。其中字母为 "a"的索引单元指向第二层索引中第一个以"a"开头的索引项,字母"b"指向第 二层索引中第一个以"b"开头的索引项,依此类推。它可以快速地将单词进行分类, 以极小的索引空间和很短的搜索时间的代价来粗略定位到首字母相同的单词范围 内。由于第一二层索引的数据量很小,因此可以在系统开始运行时先将两层索引加 载到内存。当用户输入一个单词进行查询时,首先在第一层索引中匹配单词的第一 个字母,例如单词"background"的第一个字母为"b",可以找到在第一层索引 中的"b"索引和后继"c"索弓l,分别读取它们指向第二层索引的指针pointed和 pointer2。如果输入的单词以字母"z"开头,则pointer2为整个第二层索引的结束 位置。接着跳转到第二层索引,在pointed和pointer2的范围内采用二分法进行搜索。 例如输入的单词为"background",即是在以"b"开头的第一个索引项和以"b" 开头的最后一个索引项之间开始搜索。搜索的目标是找到匹配所输入的单词前三个 字母(如果不足3个字母,则用空格补足)的索引单元。例如对于单词"backgroimd", 在第二层索引中的二分搜索结果为"bac"索引单元。如果查找的单词在第二层索引中找不到一个索引单元的开头3个字母和它匹配,则可以找出在第二层索引中按字 典顺序比目标单词的开头3个字母大的第一个索引单元。例如要查找单词"abdd", 由于第二层索引中不存在"abd"索引单元,但是存在"abe"索引单元,因此可以 找到"abe"索引单元作为搜索结果。然后从该索引单元读出指向信息层的指针,跳 转到信息层。进入信息层时,系统己经定位到开头3个字母大于("A大于B"的意思是按 照字典顺序A排在B之后)或等于目标单词开头3个字母的第一个单词。例如目标 单词为"background",此时已经定位到以"bac"开头的第一个单词"back"。从 该单词开始在信息层中顺序向后査找, 一直找到一个按字典顺序大于或等于输入的 单词为止并返回。如果返回的单词大于输入的单词,则说明目标单词不存在于字典 中,只能返回一个最接近的单词。由于进入信息层时已经通过在两层索引中的搜索完成了初步定位,索引在信息层总的顺序搜索次数较少,完全可以达到实用的目的。 本发明具有以下有益效果(1) 索引数据量少,可以在手机等处理能力和内存容量都极其有限的情况下将 索引信息全部加载入内存,搜索时在内存中执行二分查找,可以大大提高搜索效率。(2) 整个搜索过程只有在信息层中顺序查找单词时需要在外存中顺序读文件, 整个过程不需要在文件中来回移动文件指针。因此可以适用于J2ME等不支持来回移 动文件指针的情况。特别需要指出的是,第二层索引可以根据实际情况做出调整,如果词库词汇量 非常庞大,第二层索引只截取单词的前三个字母,而某一个词头前缀有非常多的单 词以其开头,例如以"con"开头的单词非常多,完成两层索引的査找之后,只能定 位到第一个以"con"开头的单词,接着在信息层中的顺序搜索可能要匹配大量的单 词之后才能找到目标单词,会导致效率降低。因此,可以根据情况对第二层索引进 行调整。当词库较为庞大时,可以截取单词开头的前4个或4个以上字母或者来建 立索引,以提高查询效率。
下面将结合实施例和附图对本发明作进一步的详细描述 图1是目前常用的电子词典词库结构总体逻辑结构示意图。 图2是本发明提出的词库结构的总体逻辑结构示意图。
具体实施方式
图1是目前常用的电子词典词库结构总体逻辑结构示意图。它以单词词头作为 索引,采用定长结构,存在较大的空间浪费,不适合手机等处理能力和内存容量都 十分有限的移动设备。图2是本发明提出的词库结构的总体逻辑结构示意图。索引数据量很小,可以 常驻内存,有较高的搜索效率,适用于手机等处理能力和内存容量都十分有限的移 动设备。在编写词库时,不可能直接按照图1的结构编写,外购的词库文件更不可 能按照图1结构组织。 一般情况下,原始的词库是存放在数据库、XML文件或者其 它格式的二进制文件中的,我们必须在PC上先自行转化为本专利定义好的词库结 构。由于第二层索引包含有单词信息块在信息层的指针,所以必须在形成信息层之 后才能确定第二层索引的数据。同理,第一层索引包含了指向第二层索引的指针, 必须在第二层索引的数据确定之后才能确定第一层索引的数据。由此可见,必须先 生成信息层,后生成第二层索引,再生成第一层索引。这是一种倒序生成词库三层 结构的过程。第二层索引多数情况下只截取单词开头的3个字母,但在词库庞大的情况下, 可以考虑截取单词开头的4个或4个以上字母。现在以第二层索引下只截取单词开 头的3个字母为例,来描述具体的词库生成算法如下(1) 使用PC读入词库词头和解释到内存队列中,将它们按照字典顺序排列。(2) 输出词头及其解释到词库解释信息文件中,并保存每个单词在该文件中的 偏移量到内存队列中。如果单词开头的第一个字母不相同,则重新开辟新 的词库解释信息文件并写入其中,最终所有单词及其解释信息按照其首字母的不同存放在不同的文件中。(3) 内存单词队列的每个单词都只截取其开头的3个字母。不足3个字母则补空格。(4) 去掉只截取开头3个字母的单词队列中重复的项,只保存第一个重复项。(5) 将去掉重复项的词头队列中每一项的3个字母及该项指向解释信息文件的 偏移量指针输出到第二层索引文件中。(6) 保存每个字母第一次出现在单词开头的索引项及在第二层索引文件中的偏 移量,并把它输出到第一层索引文件中。根据上述算法,可以生成本发明所提出的词库。其中第一层索引在完成歩骤(6) 后得到,第二层索引在完成步骤(5)后得到,信息层在完成步骤(2)后得到。
权利要求
1、一种适用于移动设备的电子词典词库结构,其特征在于由第一级索引、第二级索引和信息层组成;所述的信息层由单词的词头和音标、解释、例句所有最终展现给用户的信息组成;各信息层单元按照字典顺序排放,可以按首字母进行分割存放,按单词首字母的不同将单词信息存放到不同的文件中,一共可以把信息层分为26个小文件;所述的第二级索引的索引单元以单词词头的开头若干个字母组成和指向信息层的指针组成,一般情况下取3;若单词长度不足3,则可用空格填充;第二级索引中的索引单位也是按照字典顺序排列;所述的第一层索引的索引单元由单词的首字符和指向第二级索引的指针组成,一般情况下由“a”~“z”共26个字母组成,它们按照字典顺序排列,可以快速地将单词进行分类,粗略定位到首字母相同的单词范围内。
2、 根据权利要求1所述的适用于移动设备的电子词典库结构,其特征在于使用单词首字母作为索引快速地縮小搜索范围。
3、 根据权利要求1所述的适用于移动设备的电子词典库结构,其特征在于 使用单词开头的若干个字母作为索引在其中执行二分搜索来快速定位到单词的大概位置。
4、 根据权利要求1所述的适用于移动设备的电子词典库结构,其特征在于 为了提高查询速度而将信息层数据分割为26个小文件。
5、 根据权利要求1或3所述的适用于移动设备的电子词典库结构,其特征在于搜索单词时利用索引粗略定位到目标单词处,然后在信息层中进行顺序査找。
6、 根据权利要求1所述的适用于移动设备的电子词典库结构,其特征在于 两层索引和信息层中的单元都是按照字典顺序存放。
7、 根据权利要求1所述的适用于移动设备的电子词典库结构,其特征在于 索引信息量较少,程序运行时索引常驻内存,以提高在索引中搜索的效率。
全文摘要
本发明提供一种适用于移动设备的电子词典词库结构,适用于手机等内存空间极为有限的移动设备。它由两层索引和信息层组成。第一层索引的索引单元由单词的首字符和指向第二级索引的指针组成,第二级索引的索引单元以单词词头的开头若干个字母组成和指向信息层的指针组成,信息层单元由单词的词头和音标、解释、例句等所有最终展现给用户的信息组成。本方案索引数据量少,可以将索引信息全部加载入内存,搜索时在内存中执行二分查找,可以获得很高的查询效率,并且整个过程只有从头到尾顺序读文件的过程,因此可以适用于J2ME等不支持来回访问文件的情况。
文档编号G06F17/30GK101251847SQ20081002741
公开日2008年8月27日 申请日期2008年4月14日 优先权日2008年4月14日
发明者王建民, 罗笑南, 陈佳鹏 申请人:中山大学