CN101251848B - 一种电子词典的快速单词查询系统 - Google Patents
一种电子词典的快速单词查询系统 Download PDFInfo
- Publication number
- CN101251848B CN101251848B CN2008100274171A CN200810027417A CN101251848B CN 101251848 B CN101251848 B CN 101251848B CN 2008100274171 A CN2008100274171 A CN 2008100274171A CN 200810027417 A CN200810027417 A CN 200810027417A CN 101251848 B CN101251848 B CN 101251848B
- Authority
- CN
- China
- Prior art keywords
- word
- content
- module
- prefix
- read
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种电子词典的快速单词查询系统,通过优化单词查询的各个主要环节来提高单词查询的效率。该系统主要包含四个模块:单词搜索模块、动态缓存模块、单词内容读取与解析模块、单词内容显示模块。该系统对电子词典中单词查询软件的开发提供了很好的参考,并在单词查询的时间效率和空间占用率之间达到了很好的平衡。
Description
技术领域
本发明属于电子学习产品的技术领域,特别是涉及一种在电子词典中进行快速单词查询的系统。
背景技术
单词查询技术是电子词典中使用的主要技术,电子词典的一个最基础最主要功能就是单词查询,为了在电子词典中提高单词查询的响应速度,增强用户的体验,已有大量这方面的研究,并且很多技术相对都比较成熟了。
目前的单词查询中主要还是着眼于单词搜索这一环节,通过改进搜索算法和数据结构来提高单词搜索的速度,有B树索引搜索、二分索引搜索、hash等方法,在本系统的单词搜索模块中,是采用了加入一层指针层的二分搜索,从而减少了空间的浪费,同时采用动态缓存模块来加速搜索过程。
在单词查询的流程中,还可以通过改进其它的环节来提高整体的响应速度。本系统提出了针对单词信息量大小不均匀的特点的单词内容读取和解析的方案,以达到快速读取与解析单词的内容的目的,并通过自定义的界面生成技术加快单词内容的显示,从而在单词的内容读取解析和单词内容显示环节都进行了优化,从整体上提高了单词查询的响应速度。
发明内容
本发明的目的在于克服现有技术的不足,提出了一种适用于电子词典的快速单词查询的系统,用于指导在电子词典中单词查询软件的开发和实现,它可以实现快速的单词查询响应,达到时间和空间上有效平衡。
为了实现发明目的,采用的技术方案如下:
一种电子词典中的快速单词查询系统,设置了如下模块:
使用改进的二分搜索技术的单词搜索模块;
通过在内存中使用动态数组来模拟的动态缓存模块;
根据单词内容信息量大小来动态进行读取与解析的单词内容读取与解析模块;
使用xml技术的自定义界面配置的单词内容显示模块。
所述单词搜索模块采用了基于二分搜索的两层结构。第一层是指针层,第二层是单词词头层。单词词头层里面,词头是按顺序排放的,每个词头占用的空间是不相等的,大小就是单词词头的长度。而指针层是等长的,每个指针元素指向对应的单词词头(实际上该指针的值就是单词词头在词头层的偏移位置,用来确定词头位置的),如表1.1所示。
表1.1基于二分搜索的两层结构
所述动态缓存模块用于进一步加速单词查询,本模块是通过在内存中使用动态数组来模拟缓存,对用户查找可能性较大的单词进行缓存,从而直接命中,不需要查找外存,加快了查询的速度。这里通过如表1.2所示的一个动态数组来保存单词的信息。
表1.2动态缓存中的数组结构
单词1的词头(如“a”) | 单词1内容的地址 |
单词2的词头 | 单词2内容的地址 |
。。。。。。 | 。。。。。。 |
单词n的词头 | 单词n内容的地址 |
所述动态缓存模块中的缓存数组里每个元素是由一个单词的词头和该单词内容在外存中的地址组成的。而该数组的大小是可变的,在程序运行当中可以根据单词查找的情况来增大或者减少数组的大小。
所述动态缓存模块可以设定一个缓存数组大小的最大值为maxCacheArrayLen,以防止数组过大,占用过多的内存空间,最大值的设定可以根据硬件情况来考虑确定,对于内存充足的硬件,可以考虑适当增大缓存数组的最大值,以缓存更多的单词信息,提高在缓存中直接命中的概率,加速单词查找过程。
所述单词内容读取与解析模块根据单词搜索模块或动态缓存模块获得的单词内容在外存中的位置来读取和解析单词内容。在电子词典中,用户输入了要查找的单词后,一般是默认显示单词的词性、音标、解释等基本内容,而单词的内容还包括了俚语、短语、反义词、例句等可选内容,可选内容是在用户有进一步了解该单词的需要时选择查看的,所以在单词内容读取与解析中有3种可选的方式:
1)一次完成提取与解析的过程,将单词全部内容依次读到内存,并解析到该单词的结构中,即将单词的词性、音标、解释、俚语、例句等基本内容和可选内容都读出并解析到单词在内存中的结构。这样当用户需要查看单词的可选内容时可以直接显示。
2)一次提取,多次解析。将单词全部内容读到内存,但事先不将其解析到单词的结构中,但用户真正需要查看该单词的某一可选内容时再进行解析。
3)多次提取,多次解析。只将单词的基本内容读到内存,而当用户需要查看该单词的某个可选内容时,再从外存中读取该部分可选的内容并进行解析。
所述单词内容读取与解析模块采用了根据单词信息量的大小来动态选择不同的读取与解析方式。由于单词的信息量大小不均匀,对于单词信息量较小的单词,本模块选择使用方式1)或者2),可以在占用的空间不太大的情况下快速响应;而对于单词信息量较大的单词,则选择方式3)。
所述单词内容读取与解析模块设定一个单词内容信息量的阈值maxInfoLen,根据读取到的单词的信息量大小wordInfoLen(在单词的存储结构应该保留该字段,以方便单词内容的读取)来选择读取和解析方式,如表1.3所示:
表1.3单词内容提取与解析方式的选择
所述单词内容显示模块将需要显示的单词内容显示在屏幕上,本模块使用了控件库管理技术和自定义的界面生成技术。
所述单词内容显示模块将界面中使用到的控件通过一个虚拟的“库”来进行统一管理,对每个控件的新建、捕捉信息、响应、销毁等事件提供相同的函数来处理,通过不同的参数来区别不同的控件类型,这样提供了统一的处理方式,方便实现。
所述单词内容显示模块提出了使用xml技术的自定义界面生成技术,通过使用一个xml文件对界面上的控件进行定制,程序运行时通过读取xml配置文件,从而自动生成相应的界面,并将相关的内容显示出来。这里为每个控件定义了一些基本属性和可选属性,基本属性包括id,坐标,大小等,其中id是用来区分不同控件类型的属性,而可选属性根据不同的控件有不同的定义,比如按钮的可选属性有按钮风格(是平面还是三维),可否移动,按钮颜色等。
本发明具有以下有益效果:
1、覆盖了单词查询流程中的主要环节,在各个环节都作出了相关的优化,根据词典中单词的特点动态灵活的选择不同的方式,从整体上达到一个最优的效果,同时保证了时间效率和空间占用率之间的平衡。
2、在单词搜索中对二分搜索的技术进行了改进,大大节省了由于单词词头长度差异较大带来的空间浪费,同时使用在内存中模拟动态缓存的方式来加速单词搜索的过程。
3、在单词的内容读取与解析中提出了灵活的选择方式,根据单词内容信息量的特点,在尽量减少对内存空间占用的基础上,提高单词内容读取与解析的响应速度。
4、在单词内容显示方面,使用了xml的自定义界面生成技术,可以方便快速地定义不同的单词内容显示界面,加快开发的进程。
附图说明
图1为快速单词查询系统的结构图。
图2为完整的单词查询的流程图。
图3为单词提取、解析、显示的流程图。
具体实施方式
下面结合附图对本发明进行进一步阐述:
本发明的结构图如附图1所示,由单词搜索模块、动态缓存模块、单词内容读取与解析模块、单词内容显示模块组成。
所述的单词搜索模块主要是单词存储结构的设计。为了实现二分搜索,这里将单词的总信息分为词头和单词内容两部分,其中把单词的词头作为索引来进行二分搜索。为了实现二分搜索中要求的每个元素等长的要求,这里加入了一个指针层,指针指向单词词头的位置。这样,单词的存储结构可以按表1.4进行实现。
表1.4基于二分搜索的单词存储结构
所述的动态缓存模块主要是动态数组的设计,这里可以定义一个大小为maxCacheArrayLen的数组,数组的类型为wordCache,而wordCache是一个结构体,它包含了单词词头和单词内容的地址两部分。其中,词头为字符串形式,如在C中使用char*类型,而单词内容的地址使用了无符号长整形的类型(实际上表示的是一个偏移位置,通过该偏移位置可以在外存中定位到单词内容存储的位置)。这里给出在C语言中,该缓存数组的参考定义:
struct wordCache{
char*wordHead;
unsigned long wordAddress;
};
wordCache wordCacheArray[maxCacheArrayLen];
所述的动态缓存数组在初始化的时候,数组的每个元素均为空,当需要缓存单词数据时,才依次将数组的元素用来保存单词的信息,当数组大小达到了最大值的时候,就使用最少使用原则进行替换。
所述的单词内容读取与解析模块关键在于三种方式的选择,这取决于单词内容的信息量大小wordInfoLen。分界点的值maxInfoLen根据硬件条件设定,若硬件提供的内存比较充足,那么该值就可以设置得相对大一点,反之要设为较小的值。单词提取主要是从外存中读取单词的内容,这里涉及到单词内容的存储方式,表1.5是一种参考的存储结构:
表1.5单词内容的存储结构
所述的单词内容读取与解析模块还需要设计单词在内存中的存储结构,因为单词的内容从外存中读取出来之后,需要暂时保存在内存中。这里,一个单词的内容wordContent也可以使用一个结构体来表示,结构体包含了单词的基本内容wordBasicContent和可选内容wordOptionalContent两大部分。由于单词的基本内容和可选内容可能有多个,所以它们分别使用链表的形式来保存。在单词的基本内容中,每个结点也是一个结构体,包含了基本内容的类型(如音标、词性等)和基本内容本身,可选内容类似。
所述的单词内容显示模块可以通过一个xml文件来配置定义窗口界面,程序运行时,首先读取窗口界面的xml配置文件,然后根据配置文件的定义生成相应的控件,最后按照控件的信息在界面上将控件进行排版显示。其中,id是必须的属性,它用来标识该控件的类型,比如1代表按钮,2代表标签等,表1.6列出一些示例:
表1.6控件中的值与类型对照表
id | 控件类型 |
1 | 按钮 |
2 | 标签(label) |
3 | 单行文本框 |
4 | 复选框 |
所述的xml配置文件可以方便地对界面进行定义,确定使用什么样的控件,如何设定控件的属性以及在界面上如何排放控件等。下面的例子是一个简单的界面的xml定义:
<window>
<widget>
<id>1</id>
<posx>0</posx>
<posy>0</posy>
<width>10</width>
<height>5</height>
<content>Test!</content>
<color>gray</color>
</widget>
<widget>
<id>2<id>
<posx>20</posx>
<posy>0</posy>
<width>30</width>
<height>5</height>
<content>This a test of a gray button</content>
</widget>
<window>
这个窗口(window)中包含了两个简单的控件(widget),一个按钮和一个标签,其中posx是表示控件左上角的x坐标,posy表示控件左上角的y坐标,width表示控件的宽度,height表示控件的长度,content表示控件的内容,color表示控件的颜色。在实际应用中,可以根据需要扩展这些属性的定义。
所述的单词内容读取、解析与显示的流程如图2所示,首先读取单词内容信息量wordInfoLen,然后根据该值与maxInfoLen的比较结果来选择不同的读取与解析方式,获得单词的相关显示内容;单词显示模块读取窗口界面的xml文件生成界面,并将单词内容显示出来。
使用本系统进行一次单词查询的完整流程如图3所示包含以下几个步骤:
1)用户输入要查找的单词;
2)在动态缓存数组中查找该单词看能否命中,如果命中则获得该单词的内容在外存中的存储地址wordAddress并进入4),否则进入3);
3)调用单词搜索模块,使用二分搜索的方式查找该单词,并获得该单词的内容在外存中的存储地址wordAddress,将该单词的信息(词头和地址)缓存起来;
4)根据2)或3)获得的wordAddress来调用单词内容读取与解析模块,获得单词的基本内容和可选内容;
5)调用单词内容显示模块,读取窗口界面配置文件生成界面,并将4)获得的单词的内容显示出来。
Claims (5)
1.一种电子词典的快速单词查询系统,其特征在于包含如下四个模块:
使用改进的二分搜索技术的单词搜索模块;
通过在内存中使用动态数组来模拟的动态缓存模块;
根据单词内容信息量大小来动态进行读取与解析的单词内容读取与解析模块;
使用xml技术的自定义界面配置的单词内容显示模块;
其中所述的改进的二分搜索技术的单词搜索模块采用了基于二分搜索的两层结构,第一层是指针层,第二层是单词词头层,单词词头层里面,词头是按顺序排放的,每个词头占用的空间是不相等的,大小就是单词词头的长度,而指针层是等长的,每个指针元素指向对应的单词词头,实际上该指针的值就是单词词头在词头层的偏移位置,用来确定词头位置的;
所述的根据单词内容信息量大小来动态进行读取与解析的单词内容读取与解析模块中,设定一个单词内容信息量的阈值maxInfoLen,根据读取到的单词的信息量大小wordInfoLen来选择读取和解析方式:1)当wordInfoLen<maxInfoLen时,查看可选内容频繁,则一次完成提取与解析的过程,将单词全部内容依次读到内存,并解析到该单词的结构中;2)当wordInfoLen<maxInfoLen时,查看可选内容很少,则一次提取,多次解析,将单词全部内容依次读到内存,但事先不将其解析到单词的结构中,用户真正需要查看该单词的某一可选内容时再进行解析;3)当wordInfoLen>=maxInfoLen时,多次提取,多次解析,只将单词的基本内容读到内存,当用户需要查看该单词的某个可选内容时,再从外存中读取该部分可选的内容并进行解析。
2.根据权利要求1所述的电子词典的快速单词查询系统,其特征在于所述的动态缓存模块通过在内存中使用动态数组来模拟缓存,保存查找频率较高的单词的信息,利用内存访问速度远高于外存的特点,来提高单词查找的速度。
3.根据权利要求1所述的电子词典的快速单词查询系统,其特征在于单词内容读取与解析模块根据单词搜索模块和动态缓存模块,定位到单词的内容在外存中的存储位置,从而对单词内容进行读取。
4.根据权利要求1所述的电子词典的快速单词查询系统,其特征在于单词内容读取与解析模块中,需要设定一个单词内容信息量大小的阈值maxInfoLen,该值的大小根据内存的大小来设定,保证不影响其它程序的内存使用。
5.根据权利要求1所述的电子词典的快速单词查询系统,其特征在于在单词内容显示模块中,通过xml文件来定义界面,该单词内容显示模块负责读取配置文件并进行解析,从而自动生成界面,并显示单词的相应内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100274171A CN101251848B (zh) | 2008-04-14 | 2008-04-14 | 一种电子词典的快速单词查询系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100274171A CN101251848B (zh) | 2008-04-14 | 2008-04-14 | 一种电子词典的快速单词查询系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101251848A CN101251848A (zh) | 2008-08-27 |
CN101251848B true CN101251848B (zh) | 2010-06-09 |
Family
ID=39955239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100274171A Expired - Fee Related CN101251848B (zh) | 2008-04-14 | 2008-04-14 | 一种电子词典的快速单词查询系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101251848B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102833501A (zh) * | 2011-06-15 | 2012-12-19 | 康佳集团股份有限公司 | 一种多功能电视机装置及其支持背单词的方法 |
CN105117933A (zh) * | 2015-08-05 | 2015-12-02 | 北京奇虎科技有限公司 | 一种广告物料数据调取方法和装置 |
CN109388629B (zh) * | 2018-09-29 | 2021-04-27 | 武汉斗鱼网络科技有限公司 | 一种数组规整方法、装置、终端及可读介质 |
CN109408491B (zh) * | 2018-09-29 | 2021-02-02 | 武汉斗鱼网络科技有限公司 | 一种数组规整方法、装置、终端及可读介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5671426A (en) * | 1993-06-22 | 1997-09-23 | Kurzweil Applied Intelligence, Inc. | Method for organizing incremental search dictionary |
CN1144143C (zh) * | 1999-11-04 | 2004-03-31 | 无敌科技(西安)有限公司 | 使用快速查询索引结构的电子字典单词查询方法 |
CN101082918A (zh) * | 2006-06-02 | 2007-12-05 | 凌阳科技股份有限公司 | 一种利用字母索引表查询电子词典单词的方法及其系统 |
CN101145155A (zh) * | 2007-10-24 | 2008-03-19 | 中山大学 | 一种电子词典数据存储格式及其检索方法 |
-
2008
- 2008-04-14 CN CN2008100274171A patent/CN101251848B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5671426A (en) * | 1993-06-22 | 1997-09-23 | Kurzweil Applied Intelligence, Inc. | Method for organizing incremental search dictionary |
CN1144143C (zh) * | 1999-11-04 | 2004-03-31 | 无敌科技(西安)有限公司 | 使用快速查询索引结构的电子字典单词查询方法 |
CN101082918A (zh) * | 2006-06-02 | 2007-12-05 | 凌阳科技股份有限公司 | 一种利用字母索引表查询电子词典单词的方法及其系统 |
CN101145155A (zh) * | 2007-10-24 | 2008-03-19 | 中山大学 | 一种电子词典数据存储格式及其检索方法 |
Non-Patent Citations (2)
Title |
---|
刘东立,滕永林,姚天顺.一种汉语电子词典的新结构.中文信息学报9 3.1995,9(3),59-68. |
刘东立,滕永林,姚天顺.一种汉语电子词典的新结构.中文信息学报9 3.1995,9(3),59-68. * |
Also Published As
Publication number | Publication date |
---|---|
CN101251848A (zh) | 2008-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9223779B2 (en) | Text segmentation with multiple granularity levels | |
US9836524B2 (en) | Internal linking co-convergence using clustering with hierarchy | |
CN103268313B (zh) | 一种自然语言的语义解析方法及装置 | |
CN105045777A (zh) | 使用互联网语料库的自动的上下文相关的语言校正和增强 | |
CN101251848B (zh) | 一种电子词典的快速单词查询系统 | |
CN102193906A (zh) | Word格式试卷自动导入数据库系统的方法 | |
CN104050240A (zh) | 一种确定搜索查询词类别属性的方法和装置 | |
US10210251B2 (en) | System and method for creating labels for clusters | |
CN104252542A (zh) | 一种基于词库的动态规划中文分词方法 | |
CN102456001A (zh) | 错别字的检查方法和装置 | |
CN109922131A (zh) | 基于区块链的数据存储方法、装置、设备及存储介质 | |
CN112395418A (zh) | 网页中的目标对象提取方法、装置、电子设备 | |
CN112825111A (zh) | 自然语言处理方法与其计算装置 | |
CN104102704A (zh) | 系统控件展示方法和装置 | |
WO2008038416A1 (fr) | Dispositif de recherche de document et procédé de recherche de document | |
CN103034657B (zh) | 文档摘要生成方法和装置 | |
CN109284340B (zh) | 资源受限智能对象中关系型数据的存储及检索方法 | |
CN107528763A (zh) | 一种基于Spark与YARN的邮件内容分析方法 | |
CN112861495A (zh) | 一种基于Excel模板文件生成ImpalaSQL语句的方法 | |
KR101240330B1 (ko) | 다차원 문서 분류 시스템 및 방법 | |
CN107273654B (zh) | 电子病历表单的存储优化系统 | |
CN1226692C (zh) | 基于语义语言的机器翻译系统及方法 | |
CN102163199A (zh) | 构造索引库的方法和设备以及查询方法 | |
Wang et al. | Summarizing the differences from microblogs | |
US9009200B1 (en) | Method of searching text based on two computer hardware processing properties: indirect memory addressing and ASCII encoding |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100609 Termination date: 20140414 |