一种词典类数据的检索方法

文档序号:6639367阅读:153来源:国知局
专利名称:一种词典类数据的检索方法
技术领域
本发明涉及一种词典类数据的检索方法以及与之配合的数据组织形式和软件架构方法,尤其是一种通过网络在服务器上检索词典类数据的方法。
背景技术
所述词典类数据具有以下特征检索关键字与数据内容之间具有映射关系,即检索关键字与数据内容之间具有一对一的结构特征,通过检索关键字可获取相应的数据内容;词典类数据每条记录之间相互独立,没有约束和关联关系。本发明中,具有上述特征的数据视为词典类数据。
现有技术中,可实现网络词典类数据检索的方法之一是采用基于单机版词典类信息数据的存储和检索技术,即将非网络环境下的词典类数据库检索技术应用到网络服务器中。现有方法中所采用的数据组织方式是通过完全独立的代码实现向数据文件中添加数据以及从数据文件中检索数据,包括数据在磁盘文件中的组织形式,存储位置和索引链接的设置,在检索过程中对数据进行定位,以及读取和输出数据内容。
基于单机环境的词典类数据检索技术,由于专为单机环境设计,当该检索技术用于网络数据检索时,其检索效率的不足将阻碍网络数据检索的应用,并且,不能适应灵活的数据安全保证机制,且运行稳定性无法满足网络服务的要求。
现有技术中,另一种实现在网络服务器检索词典类数据的方法为采用通用的关系数据库技术。所述关系数据库是指数据以行和列的形式存储,各数据项之间用关系来组织的数据库;关系数据库一般都由许多不同的关系构成,其中每个关系就是一个数据元素,可以用一张二维表表示,数据元素间的每一组联系也是一个关系,也用一个二维表表示,关系数据库系统位中基本的关系运算包括选择、投影和连接。词典类数据按照通用关系数据库的组织形式进行整理,使用通用的数据库软件负责数据存储、组织和检索的任务。
采用关系数据库技术实现网络词典类数据检索的缺陷在于现有许多关系型数据库均采用了高效的底层数据引擎,然而,由于封装了完全独立的数据操作逻辑,因而极大的降低了在检索原始的词典类(检索关键字—数据)数据时的执行效率。总之,关系数据库对词典类数据检索效率较低,系统资源占用较大,功能配置和维护繁琐,且难以获得良好、简便的跨平台能力。

发明内容
本发明要解决的问题是提供一种词典类数据的检索方法,该方法能够提高在网络服务器上检索词典类数据的效率。
为解决上述技术问题,本发明的目的是通过以下技术方案实现的。
一种用于客户端在网络服务器上进行词典类数据检索的方法,包括1)建立单键对应的数据检索引擎;预置数据库系统;2)将对应于确定关键字的数据内容进行一次分类,并唯一存于确定的数据库;3)服务器获取关键字后,根据数据库系统的检索机制,获取关键字对应的数据内容,并将该数据内容发送到客户端。
在上述方法基础上,1)中预置数据库系统包括在服务器中预置至少一个数据检索环境,各数据检索环境独立使用至少一个确定的数据库资源;1)中还可进一步包括对各数据库分别预置一种压缩方式;以及,
1)中还可进一步包括对各数据库分别预置一种加密方式,或者1)中对各数据库预置不同密钥的同一种加密方式。
上述方法基础上,3)中发送数据内容时,还包括在该数据块中标识所述数据内容所采用的压缩方式。
上述方法基础上,2)中所述存储的具体方式为以所述数据分类为单元,将确定关键字对应的数据内容存储于确定数据块,在该数据块中还包括分类数据标识位,标识各分类数据内容在所述数据块中的起始位置。或者,所述存储的具体方式为以所述数据分类为单元,将确定关键字对应的数据内容按所述数据分类分别作为数据库的数据块存储。
上述方法中可采用Berkeley Data Base数据库技术作为检索引擎。
以上技术方案可以看出,由于本发明中根据词典类数据的特点(即每条记录只有一个数据字段、数据之间相互独立、没有约束和关联),建立单键对应(检索关键字—数据)的数据检索引擎,因而可实现较高的检索效率;由于本发明中直接使用底层数据搜索引擎进行单一检索,因而比现有关系型数据库封装独立的数据操作逻辑的实现方式相比,能够得到更高的检索效率,尤其在数据量较大的情况下,本发明的检索效率更加突出;并且,本发明中,将对应于确定关键字的数据内容进行一次分类,提供数据分类检索的能力,并唯一存于确定的数据库,这种数据组织方式能够提高实际应用中有效数据的比例,进而降低了网络突发负载和客户端数据等待时间。
进一步,本发明中由于在检索输出中数据块具有自描述能力,即标识该数据快所采用的压缩方式,因而,使得本发明可灵活、独立的调整每个词典类数据库的压缩和加密方式,提高了产品整体的安全性和整个运营期间的抗破解能力;同时,也是由于检索结果的独立和自描述特性,使得压缩和加密的过程对于服务器端而言完全透明,在降低服务器端数据处理压力的同时也提高了远端数据的安全性保障,也使数据引擎本身具有了相对较好的扩展性。
进一步,本发明采用了Berkeley Data Base数据库技术作为检索引擎,由于Berkeley Data Base数据库技术为一种嵌入式的底层数据引擎,使得本发明中数据检索环境最终可实现为简洁的静态连接库文件,内嵌于任何需要数据服务的应用程序中,由此可知,本发明使用配置简单,不需独立配置数据库环境,同时由于本发明中数据交互仅存在于关键字的输入和检索结果的输出中,因而在充分支持最终用户的使用习惯的前提下为后期开发者给出了简便的使用方式。并且,由于Berkeley Data Base为稳定而高效的底层数据引擎,并且由于本发明中各模块的独立性,使得本发明具有更好的运行稳定性以及更小的资源消耗。


图1为本发明采用的数据库系统结构图;图2为本发明实施例存储数据结构图;图3为本发明实施例数据库文件自描述数据结构图;图4为单个词典类数据检索结果输出数据格式示意图;图5为本实施例中整体查询结果的输出数据格式示意图;图6为第一实施例数据存储方式示意图;图7为另一实施例数据存储方式示意图。
具体实施例方式
本发明的核心思想是建立单键对应的数据检索引擎;预置数据库系统;将对应于确定关键字的数据内容进行一次分类,并唯一存于确定的数据库;服务器获取关键字后,根据数据库系统的检索机制,获取关键字对应的数据内容,并将该数据内容发送到客户端。为实现在网络服务器检索词典类数据,本发明主要包括三个方面的内容底层数据搜索引擎的选择和预置数据库系统;检索关键字对应数据内容的编码、组织、存储形式;以及检索结果的封装和数据组织。
以下从上述三个方面并结合

本发明的实现方式。
首先,选择底层数据搜索引擎,和预置数据库系统。
针对词典类数据的特征,建立单键对应的数据检索引擎。本实施例中优选Sleepy Cat公司开发的开源数据库Berkeley Data Base作为底层数据操作引擎,本实施例中采用了Berkeley Data Base提供的单键对应的基本检索逻辑,即检索关键字(Key)和数据(Data)两者构成数据库中的一个基本结构单元,通过使用这种结构,在使用Berkeley DB提供的函数来访问数据库时,只需提供关键字(Key)就能够访问到相应的数据(Data)。
Berkeley Data Base数据库是一种嵌入式数据库,它无需数据库服务器,通过内嵌在应用程序内的函数库完成各种数据操作,适合用于对响应速度要求较高的应用场景。Berkeley DB在许多方面有着独特的优势。首先,由于其应用程序和数据库管理系统运行在相同的进程空间中,进行数据操作时可以避免繁琐的进程间通信,因此耗费在通信上的开销自然也就降低到了极低程度;其次,Berkeley DB使用简单的函数调用接口来完成所有的数据库操作,而不是在数据库系统中经常用到的SQL语言。这样就避免了对结构化查询语言进行解析和处理所需的开销。
本发明中并不排除其他的能够提供单键对应检索支持的基础数据搜索引擎。
预置数据库系统,基于词典类数据的特点,本发明建立如图1所示的数据库结构。
如图所示,本发明的数据库系统可由一或多台服务器组成;每台服务器可以运行一到多个独立的数据库检索环境,每个数据检索环境使用独立的数据库资源;每个数据检索环境包含有一到多个词典类数据文件;如图所示,本实施例中,每个词典类数据文件包含有主数据库和索引数据库,每个词典数据文件中的主数据库都对应一本独立授权的词典类数据,为提高检索效率,本实施例中还设置索引数据库作为主数据库的前接数据库,以减少检索深度,例如为常用的检索关键字在索引数据库中建立数据项,并将对应关键字的数据索引指向主数据库的对应位置,检索时优先搜索索引数据库。由上述可知,所述索引数据库并非本发明所必不可少的,然而,建立索引数据库有益于降低检索深度,进而提高本发明的在网络服务器上实现词典类数据检索的效率。
数据检索环境被设计为管理独立的一到多个数据库并提供数据检索接口的最上层结构,在管理和组织数据库的同时,也是数据检索逻辑中的基础结构。数据检索环境的初始化参数通过预置的外部配置文件来实现,外部调用者能在不更改设计的情况下对数据检索环境(如工作路径、缓存大小、词典列表配置等)进行动态调整,环境在被初始化的过程中从配置文件读取相关信息。
数据检索环境提供外部数据检索的基本接口,完整的数据检索接口由数据检索环境、并发检索器和检索方法组成。数据检索环境将底层数据引擎配置为线程可重入、只读的工作模式,并提供生成并发检索器实例的调用接口;并发检索器实例则提供满足检索需求的例如设置检索关键字、添加检索数据库索引和类别筛选掩码、检索并获取数据等可调用方法。检索器实例为可并发和可重复使用的。实际中通常应根据服务器的线程处理能力一次性初始化相应数目的并发检索器实例并使用它们进行反复检索。
每个数据检索环境在数据资源和执行逻辑上被设计为各自独立的,同时每个数据检索环境产生的并发检索器在资源占用和使用逻辑上也被设计为彼此独立的;同时,所有的检索需求必须通过已有的并发检索器实例来执行,而并发检索器又必须由初始化完毕的数据检索环境创建,从而保证整个数据引擎系统对外接口的统一和独立性特征。
在预置数据库系统时,还包括预置数据库使用的加密和压缩方式,具体方法在介绍数据库编码组织形式中进行说明。
以下具体说明本实施例对词典类数据所中采用的编码组织存储形式。
以词典数据为例,在实际的词典中,每个单词对应的解释项可被划分成若干分类,每一级分类下又有子分类,即关键字对应所对应的数据内容近似为树状结构,并且所述分类会随词典内容的不同而变化。将词典源数据整理为可扩展标记语言(XML,Extensible Markup Language)的形式如下所示<word>
<wordkey>
Sampleword</wordkey><wordexp>
<wordexp_type1>
Word explain type1,XXXXXXX............
</wordexp_type1>
<wordexp_type2>
<wordexp_type2_1>
This is a child type of type2 for the word,the word search engine do not knowthis,in the database,the data combined with other child explain data belongs towordexp_type2 should be treated as one data block,e.g.compress,encrypt and soon.
</wordexp_type2_1>
<wordexp_type2_2>
Just like wordexp_type2_1</wordexp_type2_2>
</wordexp_type2>
</wordexp>
</word>
以上举例具体为检索关键字为Sampleword,对应于两类解释项,即标签<wordexp_type1>和<wordexp_type2>所对应的数据内容,其中<wordexp_type1>所对应的数据内容为Word explain type 1,XXXXXXX.........,第二类解释项<wordexp_type2>中又包括两个子分类解释,即标签<wordexp_type2_1>和<wordexp_type2_2>所对应的数据内容,其中,<wordexp_type2_1>对应的数据内容为This is a child type of type2 for the word,the word search engine do not know this,in the database,the data combined withother child explain data belongs to wordexp_type2 should be treated as one datablock,e.g.compress,encrypt and so on.,<wordexp_type2_2>对应的数据内容为Just like wordexp_type2_1。由上例可知,现有词典中,通常每个单词对应的解释项被划分成若干分类,每一级分类下又可能包含若干子分类。
在本发明中,对于检索引擎,只需要了解每个单词的第一级分类的数据组织结构,并按照此结构处理并输出数据内容。
为达到上述目的,本发明在建立数据库时,将上述现有词典数据作为源词典数据,提取检索关键字Sampleword,对应于此关键字的数据,将对应于<wordexp_type1>和<wordexp_type2>标签的数据内容分别取出进行加密和压缩处理,而不单独区分处理<wordexp_type2>的子分类<wordexp_type2_1>和<wordexp_type2_2>。即对于<wordexp_type2>标签内部的所有分类即子分类的数据内容<wordexp_type2>
<wordexp_type2_1>
This is a child type of type2 for the word,the word search engine do not knowthis,in the database,the data combined with other child explain data belongs towordexp_type2 should be treated as one data block,e.g.compress,encrypt and soon.
</wordexp_type2_1>
<wordexp_type2_2>
Just like wordexp_type2_1</wordexp_type2_2>
</wordexp_type2>
将上述数据内容作为一个整体进行压缩加密处理,基于检索后数据整理效率的考虑,标志解释类型的标签</wordexp_type2>也可被作为此类别的解释信息一同进行压缩加密等处理。
同理,对于标签<wordexp_type2>对应的数据内容
<wordexp_type1>
Word explain type1,XXXXXXX............
</wordexp_type1>
将该数据内容作为一个整体进行压缩和加密处理。
如上所述,本发明对于第一层分类的数据内容作为一个整体首先被进行有针对性的压缩处理,整个数据检索环境中的每个独立的词典数据文件可以分别设定压缩方式,即各词典数据文件之间可采用相同或不同的压缩方式;之后,对压缩后的数据进行加密处理,数据检索环境中的每个独立的词典数据文件可分别指定加密方式,即各文件间采用相同或者不同的加密方式,若采用相同的加密方式,则对于同一种加密方式,不同的数据文件可使用不同的密钥。
经过压缩和加密后的数据需要被拼接成一维的二进制数据,作为对应于“Sampleword”关键字的数据体放入数据库中。拼接的格式规范定义参照图2。如图所示,该数据结构中,以所述数据分类为单元,将确定关键字对应的数据内容拼接为确定的数据块,并且在该数据块中还包括分类数据标识位,如图所示数据结构头部所标识的各类解释数据长度,每类解释数据的长度即为该解释处理后的数据块在存储器上占用的空间计数,通过计算所述各解释数据的长度可获得各数据内容在数据块中的起始位置及终止位置,以达到更加快捷的获取解释数据的目的。
结合上述的数据库系统结构,每个数据文件中主数据库的数据为逻辑词典内所有单个词条数据项的集合。为了词典类数据库文件自描述能力的需要,增加一条记录,本实施例中,其查询关键字为20个二进制值为0x00的连续字节序列,以本发明应用于网络词典为例,其数据内容组织结构如图3所示。
其中,词典索引(4字节)用于唯一标识词典。词典类型(4字节)作为词典的辅助描述信息,用于标识词典类型,如区分词典语言类别英汉词典、汉英词典。词典索引和词典类型的对应关系主要用于在线词典客户端使用,作为不同语言类别词典的划分依据,通常词典索引和词典类型之间的对应关系一经确定不再改变,需要改变时,修改词典环境初始化配置文件。词典压缩方式(4字节)说明当前词典所用的压缩加密算法。词典自身校验数据(32字节)为256位的信息摘要值,作为词典文件自身的完整性校验依据,其摘要原始数据为词典中除当前项外所有数据对中Data字段拼接形成的数据块。
在上述底层数据搜索引擎的选择和库结构设计,以及检索关键字对应数据内容的编码、组织、存储形式的基础上,以下具体说明检索结果的封装和数据发送。
参照图4,该图为单个词典类数据检索结果输出数据格式示意图。
本发明中,单个数据块结构要求压缩文本数据块对于匹配的解压缩算法有自描述能力。为实现该目的,参照图4,本实施例中数据块长度(4字节),为图中所示整个数据块在存储器上所占用的空间计数,包括数据块长度数据自身占用的4个字节;词典索引(4字节),标志当前数据块的出处;压缩标志(4字节),用于告知在线客户端所应使用的解压缩和解密算法,以正确处理当前数据块所带的分类数据内容,每个数据库内的词典类数据采用同一种压缩方法,正常情况下,数据类型影响到所采用的压缩方式,但没有严格的约束关系;压缩/解压缩与加密/解密的算法在建立数据库时确定,并将所述压缩/解压缩与加密/解密的算法以库形式提供客户端使用;压缩文本数据即为根据用户请求从当前数据库中查询出的对应于检索关键字的数据内容。出于效率考虑,查询过程仅仅将查询出来的分类数据块做简单拼接,要求使用的解压缩算法能够识别每个数据块的结尾,以保证能够正确的对拼接后的数据块正确还原。由于每个压缩数据块还原后都包含有描述自身分类类别的XML标签,整个拼接后的数据块在解压缩之后将形成标准的XML文档,由客户端进行再解析。
参照图5,为本实施例中整体查询结果的输出数据格式示意图。对于每个检索结果不为空的数据库,将单个词典类数据的检索结果进行简单拼接作为最终的结果数据。
以上为本发明的一较佳实施例,依据本发明的核心思想,本发明在各环节仍有其他实现方式,以下简单说明。
在词典类数据存储组织环节,上述实施中对分类数据块进行拼接,图6为上述实施例数据存储方式示意图,然而本发明也可以不进行数据块的拼接,而利用数据库的单键多值支持进行存储,即将对应于同一关键字的不同类型解释数据块分开作为数据库的多条记录存放,如图7所示。检索时,枚举所有对应于检索关键字的数据条目,按照既定的排列顺序筛选所需数据。这种方式适合于经常对关键字的少数分类解释信息进行检索的情况,另外在单个分类数据量较大时(大于4KB)其总体性能要好于前述实施方式。
如果数据库数目较多,或者查询大多数查询关键字其自身都对应于较少部分的数据,则可对所有数据库建立包含内容索引,即针对于所有当前数据检索环境下的数据库,建立一个独立的索引数据库,索引数据库为所有其它数据库中所包含的每个关键字建立一条记录,对于重复的关键字则只保留一条记录,索引数据库中每个关键字对应的数据则记录此关键字在每个其它的数据库中是否存在的信息,检索时先检索此索引数据库以在检索任务中剔除不包含欲检索关键字的数据库,以降低发生无用检索的机会。此方法适用于需要一次性对于一个关键字在多个数据库中进行检索的情况。
对于较低的数据安全性要求,可采用固定压缩和加密方式的流式传输,省略数据头标识,有助于降低网络消耗和平滑数据显示。
当本发明应用于网络检词应用时,对于非文字类数据和较大的独立数据块,可以从词库当中分离出去,使用另外的数据检索和获取机制,对应的数据库中只记录用于获取数据的相关信息(如独立数据URL,FTP地址等等)非文字类数据例如一段语音,一个图片,可以在data中保存这段语音或图片的存放地址,通过获取存放地址,找到所需数据。对于实际数据中不符合“词典类数据”要求的内容,如不同关键字对应数据之间的交叉连接、共用等情况,也可以使用上述办法将存在共用情况的数据资源从关键字数据中分离出去,即将这种数据资源的网状结构部分分离到数据检索引擎之外,以确保用于建立数据库的源数据格式统一。
以上对本发明所提供的一种词典类数据的检索方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种词典类数据的检索方法,用于客户端在网络服务器上进行词典类数据的检索,其特征在于1)建立单键对应的数据检索引擎;预置数据库系统;2)将对应于确定关键字的数据内容进行一次分类,并唯一存于确定的数据库;3)服务器获取关键字后,根据数据库系统的检索机制,获取关键字对应的数据内容,并将该数据内容发送到客户端。
2.如权利要求1所述的词典类数据的检索方法,其特征在于1)中预置数据库系统包括在服务器中预置至少一个数据检索环境,各数据检索环境独立使用至少一个确定的数据库资源。
3.如权利要求2所述的词典类数据检索方法,其特征在于1)中进一步包括对于各数据库分别预置一种压缩方式。
4.如权利要求2或3所述的词典类数据检索方法,其特征在于1)中进一步包括各数据库分别预置一种加密方式。
5.如权利要求2或3所述的词典类数据检索方法,其特征在于1)中进一步包括各数据库预置不同密钥的同一种加密方式。
6.如权利要求1所述的词典类数据检索方法,其特征在于3)中发送数据内容时,还包括在该数据块中标识所述数据内容所采用的压缩方式。
7.如权利要求1所述的词典类数据检索方法,其特征在于,2)中所述存储的具体方式为以所述数据分类为单元,将确定关键字对应的数据内容存储于确定数据块,在该数据块中还包括分类数据标识位,标识各分类数据内容在所述数据块中的起始位置。
8.如权利要求1所述的词典类数据检索方法,其特征在于,2)中所述存储的具体方式为以所述数据分类为单元,将确定关键字对应的数据内容按所述数据分类分别作为数据库的数据块存储。
9.如权利要求1所述的词典类数据检索方法,其特征在于1)中采用Berkeley Data Base数据库技术作为检索引擎。
全文摘要
本发明提供了一种词典类数据的检索方法,用于网络服务器上提供词典类数据的检索服务,包括1)建立单键对应的数据检索引擎;预置数据库系统;2)将对应于确定关键字的数据内容进行一次分类,并唯一存于确定的数据库;3)服务器获取关键字后,根据数据库系统的检索机制,获取关键字对应的数据内容,并将该数据内容发送到客户端。本发明具有检索效率高、使用配置简单,不需独立配置数据库环境的特点,并且本发明可灵活调整数据的加密方式,最大限度的保证了数据的安全。
文档编号G06F17/30GK1834961SQ200510093889
公开日2006年9月20日 申请日期2005年8月31日 优先权日2005年8月31日
发明者牛智瀚 申请人:北京金山软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1