CN1776688A - 一种字符数据的检索方法 - Google Patents

一种字符数据的检索方法 Download PDF

Info

Publication number
CN1776688A
CN1776688A CN 200510131812 CN200510131812A CN1776688A CN 1776688 A CN1776688 A CN 1776688A CN 200510131812 CN200510131812 CN 200510131812 CN 200510131812 A CN200510131812 A CN 200510131812A CN 1776688 A CN1776688 A CN 1776688A
Authority
CN
China
Prior art keywords
character
character data
index
data
index entry
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 200510131812
Other languages
English (en)
Other versions
CN100483409C (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 Kingsoft Office Software Inc
Original Assignee
Beijing Kingsoft Software 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 Kingsoft Software Co Ltd filed Critical Beijing Kingsoft Software Co Ltd
Priority to CN 200510131812 priority Critical patent/CN100483409C/zh
Publication of CN1776688A publication Critical patent/CN1776688A/zh
Application granted granted Critical
Publication of CN100483409C publication Critical patent/CN100483409C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

本发明涉及一种字符数据的检索方法。包括:1)提取源数据库中字符数据的前两位字母组合作为索引项建立索引;2)记录每个索引项所对应的字符数据的存储地址;3)加载所述索引到内存;以及,4)根据输入关键字的前两位字母加载该字母组合索引项对应的字符数据到内存;5)遍历内存中的字符数据,输出与关键字匹配的数据。本发明能够快速的反馈与关键字相似的字符数据,并且不仅降低了内存占有量,也具有较高的匹配速度。

Description

一种字符数据的检索方法
技术领域
本发明涉及一种数据检索技术,尤其是字符类数据的检索方法。
背景技术
用户在进行词典类数据的查询操作中,用户往往出现不能十分确定查询关键字的具体拼写的情况;或者,用户需要查询具有部分相同字符的数据。针对以上两种情况,可以依据用户输入的不确定的字符串,从源数据中查找出一系列与之相似的数据,供用户参考,同时也支持包括通配符的关键字的查找。在关键字中加入通配符“?”或“*”以查找所有与之预期相同或者相近的字符数据。其中通配符“?”匹配文件名中的单个字符,而通配符“*”匹配零个或多个字符。例如data?.dat的模式所能查找到的文件包括:data1.dat或者dataN.dat;当使用′*′字符代替′?′字符时(即data*.dat的模式),则会扩大检索出的文件范围,则下列名称的文件将出现在查询结果中:data12222.dat或者data12XF.dat等。
如本领域技术人员所知,关键字的查找方法是对源数据中所有数据逐一进行比对。所述源数据通常是保存在磁盘上的单词索引文件。由于对磁盘操作的速度较慢,并且逐一进行对比的算法较为繁琐,因而,现有技术不能提供更高的检索速度。现有技术的一种改进方法是先将磁盘文件中的数据读入内存,进而在内存中进行字符匹配的操作,但是由于不同检索应用中的索引文件大小不同,尤其在索引文件较大的情况下,将其全部读入内存会占用相当部分的内存空间,进一步由于该改进方法仅改变了匹配操作的环境,而依然沿用了现有技术中较为繁琐的字符匹配算法,因而所述对现有技术的改进并没有明显的提高字符查找的速度。
发明内容
本发明的目的是提供一种字符数据的查找方法,该方法能够快速的反馈与关键字相似的字符数据。
为解决上述技术问题,本发明的目的是通过以下技术方案实现的:1)提取源数据库中字符数据的前两位字母组合作为索引项建立索引;2)记录每个索引项所对应的字符数据的存储地址;3)加载所述索引到内存;以及,4)根据输入关键字的前两位字母加载该字母组合索引项对应的字符数据到内存;5)遍历内存中的字符数据,输出与关键字匹配的数据。
在上述方法基础上,1)中进一步包括:建立一位字母组合的索引项,该索引项对应于以该字母为首字母,且前两位为字母与非字母组合的字符数据;以及,4)之前还包括:查找索引中是否有与输入关键字前两位字符相匹配的索引项,若有则进行4),否则加载与输入关键字首位字符相匹配的索引项到内存。
上述方法中,3)中进一步将索引保存到哈希表。所述源数据库中字符数据按字符顺序进行排列;则2)具体为记录确定的索引项所对应第一个字符数据的地址,以及进一步记录包括确定的索引项所对应字符数据的数量。本发明所述非字母字符包括:空格符、数字、分隔符等。
以上技术方案可以看出,本发明是一种字符数据的检索方法,该方法中,在设计索引文件的时候建立了二级索引,及将所有字符数据最前面的两个字母作为二级索引项,并记录每二级索引项所对应单词的存储位置;并且,在每次查词操作的时候仅根据查找关键字的前两位字符加载相应的字符数据到内存,进而在该字符数据的集合范围内进一步遍历进行匹配操作等。因而,本发明具有查词速度快的优点。
进一步,本发明采用哈希表管理二级索引的信息,即在每次程序运行时,将所述二级索引与索引项下字符数据的存储位置读入哈希表,以便于之后的查找。每次对源模型的查找只需要对用户输入的关键字进行分析,剥离出二级索引,再对哈希表进行查找从而找到相对索引项的偏移并将从此偏移开始的单词集合块读入内存从而进行查找和匹配。这样不仅进一步降低了内存占有量,也提升了匹配速度。
附图说明
图1为二级索引结构图;
图2为本发明实施例流程图;
图3为目标模型与源模型匹配流程图。
具体实施方式
本发明涉及字符数据的检索方法。其中包括以下概念。
源数据:指所有被搜索的数据。如在电子词典中,所述源数据即指所有单词或词组的集合,这些单词或词组通常以名称为单词索引的磁盘文件的形式存在。
源模型:将用户输入的欲查找的字符串称为源模型(Source Pattern),亦为搜索关键字,源模型中可包括特殊的字符串。数据集中于之比对的字符串成为“目标模型(Target Pattern)”
目标模型:与用户所输入的字符串相似的单词集合称为目标模型,目标模型可以理解为依据用户的输入,从源数据划分出的小范围数据集合。
以下说明本发明的具体实施方式。本发明优选实施例的核心在于:在源数据中建立二级索引,建立二级索引文件,即提取源数据库中字符数据的前两位字母组合作为索引项建立索引和建立一位字母组合的索引项,该索引项对应于以该字母为首字母,且前两位为字母与非字母组合的字符数据;在内存中,采用哈希表保存所述二级索引文件,即所述索引项与其所对应的字符数据的对应关系;以及,查找索引中是否有与输入关键字前两位字符相匹配的索引项,若有则加载该字母组合索引项对应的字符数据到内存;否则加载与输入关键字首位字符相匹配的索引项到内存;最后,遍历内存中的字符数据,输出与关键字匹配的数据。
由上可知,本发明的核心之一在于建立二级索引。图1为本发明二级索引结构图,参照该图具体说明二级索引的建立。
本发明所建立的二级索引是将源数据中所有字符数据最前面的两个字母做成二级索引;以及,进一步建立一位字母的索引项,该一位字母的索引项对应于以该字母为首字母,且前两位为字母与非字母组合的字符数据。并记录以下信息:二级索引项;该二级索引项所对应源数据中第一个字符数据在索引文件中的偏移(P);该二级索引项所对应源数据中第一个字符数据在索引文件中的偏移与以下一个二级索引项所对应源数据中的第一个字符数据在索引文件中的偏移之差(Pc)。
将二级索引项、所述字符数据的偏移(P)以及所述偏移之差(Pc)这三个数据组成一个元组(tuple),附加在索引文件前面,一个元组结构是(二级索引,P,Pc)。
如图,二级索引项ab的元组结构为:ab:323:745,其中以ab开头的第一个单词是abacus,这个单词在索引文件中的偏移是323,其中以ac开头的第一个单词是academic,这个单词在索引文件中的偏移是1068,之差为745,说明以ab开头的单词共有745个。进一步如图1所示,其中二级索引项a的元组结构为:a:0:323,该索引项所对应的源数据为以a为首字母的词组或字符组合,如图,第一个字符数据为a case in point,该词组在索引文件中的偏移为0,且索引项a下的最后一个字符数据为A.M.,其偏移为322,则索引项a对应源数据的字符数据数为323。
图2为本发明实施例流程图,参照该图说明本发明的实现方式。
步骤21:在现有源数据的索引文件基础上,创建二级索引,将二级索引和偏移等记录在元组中,把所有二级索引的元组附加到索引文件前面;所述二级索引的建立方法参照上文说明;
步骤22:程序启动后,加载索引文件前面的所有元组数据到内存中,并保存到哈希表中;
所述哈希表是一种数据结构,其基本思想是根据当前待查找数据的特征,以记录关键字为自变量,设计一个function,该函数对关键字进行转换后,其解释结果为待查的地址。具体的,哈希表根据关键值码直接进行访问,即通过把关键值码映射到表中一个位置来访问记录,以加快查找的速度;所述映射函数叫做哈希函数,例如:F(a)=b,其中F()为哈希函数,a表示键值,b为返回值。相对于树型结构、列表结构等数据结构的查找,哈希表的检索效率较高;
本实施例中采用哈希表保存建立的二级索引,每次程序启动的时候将这些数据读入哈希表中,每次对源模型的查找只需要对用户输入的单词进行分析,剥离出二级索引再对哈希表进行查找从而找到相对索引的偏移并将从此偏移开始的单词集合块读入内存从而进行查找和匹配,这样不仅降低的内存占有量,也提升了匹配速度;
步骤23:获取用户输入的关键字;
步骤24:取所述关键字字符串的前2位字符作为在哈希表中进行查找的关键值码(key),若字符串为一个字符,则将该字符作为关键值码;
步骤25:依据关键值码,利用哈希函数返回二级索引的偏移(P)和与上一个二级索引之间的偏移差(Pc);
若步骤24中获取的两位字符为字母组合或一个字母,则根据查找哈希表中与之匹配的二级索引项;例如:若所查关键字为abacus,则返回索引项ab所对应字符数据在索引文件中的偏移以及所述偏移差;
若步骤24中获取的两位字符为字母和非字母的组合,则经查找发现哈希表中不存在与之匹配的二级索引项,则返回以该关键字首字母为二级索引项的偏移(P)以及所述的偏移差(Pc);例如:若待查关键字为A.M.,则前两位字符组合为A.,经查找没有建立该字符组合的二级索引项,此时应返回索引项a所对应字符数据在索引文件中的偏移即偏移差;
若关键字前两位字符组合中包含通配符“?”或“*”,所述通配符“?”和“*”通常被用来和普通字符(如a到z)组合,作为一个字符串进行查找,“?”代表一个字符,“*”代表一串字符;如果通配符在第一位,则通常不具备操作意义,因而忽略;若通配符在第二位,基于通配符的定义,应返回首字母为关键字第一位字母的所有二级索引项的所述偏移和偏移差;例如:若输入关键字为a?acus,则基于通配符的定义,发现a?与a、ab至az的所有二级索引字符组合均匹配,因而,返回以a为开头的所有二级索引项的偏移和偏移差;对于通配符*,采用相同的算法操作;
步骤26:从索引文件中找到该偏移值所对应的单词,并从这个单词开始偏移Pc个的单词,作为一个数据集合读到内存中,称为目标模型;
步骤27:遍历目标模型中的每个单词,分别与用户输入的源模型进行比对,返回所有匹配的数据,并进行显示。
步骤27中所述源模型与目标模型的对比操作分为以下三种情况:
1)用户输入源模型中没有通配符,顺序比较源模型中每个位置的字符是否与目标模型中相同位置的字符都相同,若都相同,则说明匹配成功;
2)用户输入源模型中含有“?”,首先判断源模型与目标模型的长度是否相等.如果相等则继续数据流否则返回,其中:若“?”出现在源模型头部,这种情况一般没有操作意义,可忽略;若“?”出现在源模型尾部(如abacu?),则将源模型中′?′之前各个位置的字符与目标模型相同位置的字符逐一顺序比较,如果各个位置的比较结果都相同则匹配成功;若“?”出现在源模型中部,则应顺序比较源模型中′?′之前的字符,且逆序比较′?′之后的字符,如果都相等则匹配成功;
3)用户输入源模型中含有′*′,若′*′出现在源模型中部(如:ab*s),则将源模型中′*′前的所有位置的字母与目标模型相应位置的字母顺序进行比较,如果相应位置都相同,则进一步将源模型中′*′后的所有字母按照逆序与目标模型进行比较,如果相应位置都相同则匹配成功;若“*”出现在源模型尾部(如:ab*),只需将源模型中“*”之前各个位置的字母与目标模型相同位置的字母逐一顺序比较,如果各个位置的比较结果都想同,则匹配成功。
依据以上原则,参照图3,进一步说明当目标模型被加载到内存后,步骤27中遍历目标模型,分别与用户输入关键字(源模型)进行对比的操作。
步骤31:分析源模型;
步骤32:判断源模型中是否包含通配符;若不包含通配符则进行步骤33;若通配符为“?”,则进行步骤35;若通配符为“*”,则进行步骤310;
步骤33:判断源模型的每个字符是否与目标模型中相同位置的字符相同,若相同则进行步骤34,否则结束该次匹配操作;
步骤34:返回目标模型;
步骤35:比较源模型核目标模型长度是否相同;若相同则进行步骤36,否则结束此次匹配操作;
步骤36:返回“?”所在位置;若“?”在源模型第一位,则结束此次匹配操作;若“?”在源模型最后一位,则进行步骤37;否则进行步骤38;
步骤37:顺序比较源模型?之前的每个字符是否与目标模型中相同位置的字符都相同,若相同则进行步骤34,否则结束此次匹配操作;
步骤38:顺序比较源模型?之前的每个字符是否与目标模型中相同位置的字符都相同,若相同,则进行步骤39,否则结束此次匹配操作;
步骤39:逆序比较源模型?之后的每个字符是否与目标模型中相同位置的字符都相同,若相同,则进行步骤34,否则结束此次匹配操作;
步骤310:返回“*”所在位置;若“*”在源模型第一位,则结束此次匹配操作;若“*”在源模型最后一位,则进行步骤33;否则进行步骤311;
步骤311:顺序比较源模型*之前的每个字符是否与目标模型中相同位置的字符都相同,若相同则进行步骤312,否则结束此次匹配操作;
步骤312:逆序比较源模型*之后的每个字符是否与目标模型中相同位置的字符都相同,若相同则进行步骤34,否则结束此次匹配操作。
以上仅为依据步骤27中所述匹配原则进行的源模型与目标模型匹配的具体实施例。其中部分步骤间的执行顺序可进行调整,本文不再赘述。
以上对本发明所提供的一种字符数据的检索方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (7)

1、一种字符数据检索方法,其特征在于:
1)提取源数据库中字符数据的前两位字母组合作为索引项建立索引;
2)记录每个索引项所对应的字符数据的存储地址;
3)加载所述索引到内存;以及,
4)根据输入关键字的前两位字母加载该字母组合索引项对应的字符数据到内存;
5)遍历内存中的字符数据,输出与关键字匹配的数据。
2、如权利要求1所述的字符数据检索方法,其特征在于:
1)中进一步包括:建立一位字母组合的索引项,该索引项对应于以该字母为首字母,且前两位为字母与非字母组合的字符数据;
以及,4)之前还包括:查找索引中是否有与输入关键字前两位字符相匹配的索引项,若有则进行4),否则加载与输入关键字首位字符相匹配的索引项到内存。
3、如权利要求1所述的字符数据检索方法,其特征在于:
3)中进一步将索引保存到哈希表。
4、如权利要求1所述的字符数据检索方法,其特征在于:
源数据库中字符数据按字符顺序进行排列。
5、如权利要求4所述的字符数据检索方法,其特征在于:
2)具体为记录确定的索引项所对应第一个字符数据的地址。
6、如权利要求5所述的字符数据检索方法,其特征在于:
2)中进一步包括记录确定的索引项所对应字符数据的数量。
7、如权利要求2所述的字符数据检索方法,其特征在于:
所述非字母字符包括:空格符、数字、分隔符。
CN 200510131812 2005-12-15 2005-12-15 一种字符数据的检索方法 Active CN100483409C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200510131812 CN100483409C (zh) 2005-12-15 2005-12-15 一种字符数据的检索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200510131812 CN100483409C (zh) 2005-12-15 2005-12-15 一种字符数据的检索方法

Publications (2)

Publication Number Publication Date
CN1776688A true CN1776688A (zh) 2006-05-24
CN100483409C CN100483409C (zh) 2009-04-29

Family

ID=36766180

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200510131812 Active CN100483409C (zh) 2005-12-15 2005-12-15 一种字符数据的检索方法

Country Status (1)

Country Link
CN (1) CN100483409C (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101221481B (zh) * 2007-01-12 2011-08-24 华硕电脑股份有限公司 手持通讯装置及其预测式输入方法
CN102402297A (zh) * 2010-09-16 2012-04-04 北大方正集团有限公司 一种古琴减字谱的部件组织和输入方法
CN103488709A (zh) * 2013-09-09 2014-01-01 东软集团股份有限公司 一种索引建立方法及系统、检索方法及系统
CN103514404A (zh) * 2012-06-29 2014-01-15 网秦无限(北京)科技有限公司 安全检测方法和安全检测装置
CN103970605A (zh) * 2013-02-06 2014-08-06 珠海世纪鼎利通信科技股份有限公司 一种基于低性能终端的数据分析方法及装置
CN104778197A (zh) * 2014-12-30 2015-07-15 北京锐安科技有限公司 一种数据查找方法及装置
CN105589862A (zh) * 2014-10-21 2016-05-18 杭州华为企业通信技术有限公司 车牌数据的索引结构建立方法、检索方法及装置
CN108509505A (zh) * 2018-03-05 2018-09-07 昆明理工大学 一种基于分区双数组Trie的字符串检索方法及装置

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101221481B (zh) * 2007-01-12 2011-08-24 华硕电脑股份有限公司 手持通讯装置及其预测式输入方法
CN102402297A (zh) * 2010-09-16 2012-04-04 北大方正集团有限公司 一种古琴减字谱的部件组织和输入方法
CN102402297B (zh) * 2010-09-16 2015-04-22 北大方正集团有限公司 一种古琴减字谱的部件组织和输入方法
CN103514404A (zh) * 2012-06-29 2014-01-15 网秦无限(北京)科技有限公司 安全检测方法和安全检测装置
CN103970605A (zh) * 2013-02-06 2014-08-06 珠海世纪鼎利通信科技股份有限公司 一种基于低性能终端的数据分析方法及装置
CN103488709A (zh) * 2013-09-09 2014-01-01 东软集团股份有限公司 一种索引建立方法及系统、检索方法及系统
CN103488709B (zh) * 2013-09-09 2017-06-16 东软集团股份有限公司 一种索引建立方法及系统、检索方法及系统
CN105589862A (zh) * 2014-10-21 2016-05-18 杭州华为企业通信技术有限公司 车牌数据的索引结构建立方法、检索方法及装置
CN104778197A (zh) * 2014-12-30 2015-07-15 北京锐安科技有限公司 一种数据查找方法及装置
CN104778197B (zh) * 2014-12-30 2019-02-01 北京锐安科技有限公司 一种数据查找方法及装置
CN108509505A (zh) * 2018-03-05 2018-09-07 昆明理工大学 一种基于分区双数组Trie的字符串检索方法及装置
CN108509505B (zh) * 2018-03-05 2022-04-12 昆明理工大学 一种基于分区双数组Trie的字符串检索方法及装置

Also Published As

Publication number Publication date
CN100483409C (zh) 2009-04-29

Similar Documents

Publication Publication Date Title
CN1776688A (zh) 一种字符数据的检索方法
US20110113048A1 (en) Enabling Faster Full-Text Searching Using a Structured Data Store
US6754650B2 (en) System and method for regular expression matching using index
Baeza-Yates Introduction to Data Structures and Algorithms Related to Information Retrieval.
Jagadish et al. On effective multi-dimensional indexing for strings
US20030078915A1 (en) Generalized keyword matching for keyword based searching over relational databases
US8577891B2 (en) Methods for indexing and searching based on language locale
EP2172853B1 (en) Database index and database for indexing text documents
US8131726B2 (en) Generic architecture for indexing document groups in an inverted text index
CN103282902A (zh) 字尾数组候选选择和索引数据结构
CN105843960B (zh) 基于语义树的索引方法和系统
CN105335481A (zh) 一种大规模字符串文本的后缀索引构造方法及装置
CN108509505A (zh) 一种基于分区双数组Trie的字符串检索方法及装置
US20080033909A1 (en) Indexing
US8914377B2 (en) Methods for prefix indexing
US20110113052A1 (en) Query result iteration for multiple queries
Liu et al. AUDR: an advanced unstructured data repository
US20120303608A1 (en) Method and system for caching lexical mappings for rdf data
CN110019637B (zh) 一种标准文献检索的排序算法
CN1287316C (zh) 在索引高键码生成期间压缩变长列的方法和系统
Arseneau et al. STILT: Unifying spatial, temporal and textual search using a generalized multi-dimensional index
US7822736B2 (en) Method and system for managing an index arrangement for a directory
Kim et al. Efficient processing of substring match queries with inverted variable-length gram indexes
KR20060087947A (ko) 통합패스의 노드범위를 이용한 엑스엠엘 인덱스 시스템 및방법
CN1203411C (zh) 资料索引搜寻存取管理方法

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 KINGSOFT OFFICE SOFTWARE CO., LTD.

Free format text: FORMER OWNER: BEIJING JINSHAN SOFTWARE CO., LTD.

Effective date: 20140313

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100083 HAIDIAN, BEIJING TO: 100085 HAIDIAN, BEIJING

TR01 Transfer of patent right

Effective date of registration: 20140313

Address after: Kingsoft No. 33 building, 100085 Beijing city Haidian District Xiaoying Road

Patentee after: Beijing Kingsoft WPS Office Co., Ltd.

Address before: 100083 Bai Yan building, 238 middle Fourth Ring Road, Haidian District, Beijing

Patentee before: Beijing Jinshan Software Co., Ltd.

C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: Kingsoft No. 33 building, 100085 Beijing city Haidian District Xiaoying Road

Patentee after: Beijing Kingsoft office software Limited by Share Ltd

Address before: Kingsoft No. 33 building, 100085 Beijing city Haidian District Xiaoying Road

Patentee before: Beijing Kingsoft WPS Office Co., Ltd.