一种信息存储方法、信息查询方法、搜索引擎装置的制造方法【专利摘要】一种信息存储方法、信息查询方法、搜索引擎装置,属于通信、数据库存储领域。本发明信息存储方法,首先收集文档和术语信息,其次建立索引,计算权重构建索引项数据结构,接着建立索引项地址相关联的比特映射组,最后根据比特映射组建立哈希表。本发明信息查询方法基于上述信息存储方法实现,根据查询术语加载与之相关的比特映射组;加载比特映射组内的8*b比特数据块,b为大于0的整数,形成关键字,并根据哈希表查询术语的权重,最后计算该文档得分;当查询术语为多个,继续加载8*b比特数据块直至加载所有,之后对前k候选文档按得分排序;当查询术语为1个,结束。本发明基于比特映射和哈希表完成,不仅能使用多种逻辑运算,且运算速度大幅提高,提高了CPU运行效率。【专利说明】-种信息存储方法、信息查询方法、搜索引擎装置
技术领域:
[0001]本发明设及通信领域和数据库存储领域,尤其设及一种信息存储方法、信息查询方法和引擎装置。【
背景技术:
】[0002]基于万维网、大数据信息、广告匹配和企业数据捜索等数据的文本信息检索需要利用相应存储、查找算法、技术和方法。几乎所有当代捜索引擎都基于一基本数据结构,即对前k文档检索的倒排索引。索引组织最常见方式之一是文档顺序索引。术语t出现在文档d内,被称为索引项。在本文索引过程期间,与术语t相关联的一组索引项构建为索引列表。为了记录每个术语的索引列表,建立与术语相关的索引项查询表。索引项的形式为<docid,payload〉,其中docid是文档d的文档编号,W及其中payload被用于存储,诸如文档d出现术语t和其他对术语在此文档的权重因子的信息。每个索引列表按照文档编号docid的升序排列。[0003]在捜索时,在输入中提取查询术语,并进一步基于倒排索引完成查询过程,W检索最相关的文档。所述查询过程包括两个关键步骤。第一个步骤:索引列表交运算,目的是从术语索引列表中找出结果候选文档。第二个步骤:评分,进一步计算结果内每个文档的得分。[0004]在索引列表交运算过程中,现有方式是保持多个指针指向多个术语的索引列表,并同时通过它们,基于输入查询的布尔逻辑选择候选文档。运个方式,运算是在线性时间内完成。举例说明,如果列表长度为m和n,进行0(m+n)次交互运算。图1示出了两个术语索引列表的交运算。大致算法如下(参考:曼宁,拉加万,和舒策,"信息检索简介",剑桥大学剑桥出版社,2009)由此可见,上述过程运算有效,但随着索引尺寸增大,运算次数也变多。对于大尺寸索引,当查询流行术语,即多个文档内均有该术语时,由于索引列表长而多,索引列表交运算需要花费很长时间执行,而采用此方法完成的整个查询过程花费时间也相对变长,计算机运算速率降低。【
发明内容】[0005]为了解决上述技术问题,本发明的目的是提供一种简单的信息存储方法、适用多种运算且运算速率高的信息查询方法、W及利用上述存储方法、查询方法实现的捜索引擎装置。[0006]本发明提供一种信息存储方法,步骤1:收集文档和术语信息,每个文档标识有文档编号docid,所述文档编号docid为不小于零的整数.步骤1.1:计算每个文档d的每个术语t的术语频率*争煉,苗吝并保存;步骤1.2:建立文档频率鄉错3的全局表,其中,全局表为能够反映整个文档集中有多少文档包含某个术语的表,尚f待库为反映术语稀有性的文档频率;步骤2:建立索引;步骤2.1:对每个文档,根据术语频率巧欲,礙和文档频率継销)计算在此文档中术语的权重聲拇V;為;步骤2.2:建立索引项数据结构,保存每个索引项,每个索引项存储文档编号docid、术语t和权重W;步骤2.3:建立比特映射组,保存每个术语t的文档编号docid,每个比特映射组内T'标识为某个文档编号docid下,该文档d包含术语t,"0"标识为某个文档编号docid下,该文档d不包含术语t;步骤2.4:建立哈希表,所述哈希表由多个比特映射组内8补比特数据块构成,每个8帥比特数据块W关键字;转轉綠,技,域辑:醉标识,其中n不小于0,为8*b比特数据块的数量,data为8帥比特数据,每个8帥比特数据块存储有关键字值,所述关键字值为索引项数据结构内的索引项,其中b为大于0的整数。[0007]该信息存储方法利用比特映射组织索引列表进行索引列表交运算,W提高索引列表交运算的运行性能,同时利用比特映射可通过任何术语布尔逻辑算法,如与、或、非运算,高效运算选择出候选文档;并且基于比特映射所建立的哈希表,为本发明提供了一个高效的索引列表查询结构。[0008]作为优选,所述步骤1通过正排索引步骤收集文档和术语信息。[0009]作为优选,所述步骤2通过倒排索引步骤建立索引。[0010]作为优选,所述步骤2.1,其中N为文档的总数。[0011]作为优选,步骤2.4哈希表填充方法具体为:步骤2.4.1:对给定术语t,从比特映射组中加载8*b比特数据块,加载具有文档编号docid的每个文档的相关术语权重||釋;,诚;步骤2.4.2:基于比特映射组中的多组8帥比特数据块,建立可变索引项阵列;步骤2.4.3:形成关键字矜巧<*.,口:(^31:因>;步骤2.4.4:在哈希表内插入关键字值。[0012]本发明还提供一种信息查询方法,用于基于比特映射和哈希表实现文档和术语存储的信息系统,步骤1:解析查询并提取所查询的术语;步骤2:加载与所有术语相关的比特映射组;步骤3:根据查询术语,加载比特映射组内的8帥比特数据块,形成关键字,并根据哈希表查询术语的权重,最后进一步计算该文档的得分,其中b为大于0的整数;步骤4:当查询的术语为多个时,继续步骤3,直至加载完成比特映射组内所有8*b比特数据块,进入步骤5;当查询的术语为1个时,结束。[0013]步骤5:通过文档得分,对前k候选文档进行排序。[0014]该信息查询方法,基于利用比特映射、哈希表存储文档和术语的信息系统实现,可采用按位逻辑运算,比传统的交运算速度更快,进一步提高了CPU运行效率。[0015]作为优选,在步骤2之后,步骤3之前,进行按位逻辑与运算:对加载的比特映射组进行按位逻辑与运算,结果比特映射组包含前k候选文档的文档编号docid。[0016]作为优选,在步骤2之后,步骤3之前,进行按位逻辑非运算:对加载的比特映射组进行按位逻辑非运算,结果比特映射组包含前k候选文档的文档编号docid。[0017]作为优选,所述信息查询方法用于采用上述信息存储方法的信息系统。[0018]本发明还提供一种采用上述信息查询方法的捜索引擎装置。[0019]本发明具有W下有益效果:本发明信息存储方法、信息查询方法、捜索引擎装置,基于比特映射和哈希表完成,不仅能使用多种运算逻辑算法,且运算速度大幅提高,进一步提高了CPU运行效率。【附图说明】[0020]图1为现有索引列表交运算的示例图;图2为本发明比特映射组存储结构示意图;图3为本发明哈希表存储结构示意图。【具体实施方式】[0021]W下结合附图对本发明作进一步详细说明。[0022]图1所示为传统索引列表交运算的方法,保持多个指针指向多个术语的索引列表,并同时通过它们,基于输入查询的布尔逻辑选择候选文档。通过比较文档地址,确定是否进行下一个查询,若相等则输出查询术语,不相等再逐个查询,整个运算是在线性时间内完成,随着列表的长度增长,其交互运算次数增多,运算也更加复杂,无法快速实现文本捜索,尤其不适用索引列表长的情况。[0023]为了提高本发明索引列表交运算的性能,我们提出了利用比特映射和哈希表的方式存储文本信息,并基于此进行信息查询。[0024]本发明提供一种信息存储方法,主要为索引构建过程。在此过程中,每个文档标识有文档编号docid,所述文档编号docid为不小于零的整数。首先,利用正排索引步骤收集文档和术语信息:(1)计算每个文档d的每个术语t的术语频率棘娩,游并保存;(2)建立文档频率;抽戸自掉:的全局表,其中,全局表为能够反映整个文档集中有多少文档包含某个术语的表,沒fC#;为反映术语稀有性的文档频率。[0025]接着,利用倒排索引步骤构建索引:(1)对每个文档,根据术语频率;链:耗,:浆和文档频率辦健3:计算在此文档中术语的权重#細,碱,例如,其中N为文档的总数,权重聲C起戒与术语频率減键,據成正比,而与术语文档频率辦消i成反比,权重货辖,苗越大表示运个术语对该文档越重要。[00%](2)建立索引项数据结构,保存每个索引项,每个索引项存储文档编号docid、术语t和权重W。[0027]下述为索引项数据结构:(3)建立比特映射组,保存每个术语t的文档编号docid,如图2所示。每个术语对应具有如图2所示的比特映射组,在每个比特映射组内T'标识为某个文档编号docid下,该文档d包含术语t,例如,在N位置处的比特为T'时,具有在N位置的文档地址的文档包含术语t;反之"0"标识为某个文档编号docid下,该文档d不包含术语t。比特映射组的大小为N比特或N/8+1字节,N为总共的文档数量。[0028](4)建立哈希表,基于比特映射的8帥比特数据块来快速访问索引项,其中b为大于0的整数。下述示例,Wb为2时的16比特数据块进行说明。上述多个术语的比特映射组构成全体比特映射,取全体比特映射中16比特数据块或2字节数据块,在不需要计算的情况下进行快速数据访问。上述完成需要建立具有关键字K巧的哈希表,关键字KsiKt,n,dat.s>,其中t为术语,n不小于0,为16比特数据块或2字节数据块的数量,data为16比特数据或2字节数据。假定我们具有T个术语和N个文档,2字节数据的数量为T*N/16。因每个文档仅包含非常有限的术语,全体比特映射上大部分比特位上皆为0,因此哈希表内大部分值为空。[0029]下述由多个索引项构成的索引项列表构建为哈希表,并参照附图3。[0030]其中,哈希表填充方法具体为:步骤1:对给定术语t,从比特映射组中加载16比特数据块,加载具有文档编号docid的每个文档的相关术语权重聲择,成。[0031]步骤2:基于比特映射组中的多组16比特数据块,将该多组比特映射组构成可变索引项阵列。因每组16比特数据块由%"、T'构成,16比特数据块内具有不同数量M个"r,因M的不同,则产生不同长度的索引项阵列。[0032]步骤3:形成关键字知Kt.,n,,对每组16比特数据块进行标识;因16比特数据块由"0"、"r构成,当在查询处理逻辑与操作时,一些比特位从1变为0,运样会造成最终查询候选文档有遗漏,而如果要全面查找所有文档,在查询过程中一边计算可能遗漏的情况,一边查找,大大降低了整个运算速率,对CPU性能要求变高。为此,在获得的16比特数据块的基础上,需延伸获得与之相关的其他16比特数据或2字节数据,并在信息存储时,提前填充进哈希表内,运样一旦进行查询处理逻辑与、非等操作时,既可W提高查询速度,又提高了查询准确率。[0033]假定某组16比特数据块内有M个"1",则加上原本的16比特数据块外,一共具有Q组ie比特数据块,坟》主+典巧/:(辦-i)P:(i!巧+ff庇的:辦-巧*巧巧+…"HMO/征*贿-:L巧',其中M为整数,1兰M兰16.。例如,当某组16比特数据块为%lOOOllOOOOOOOOr,则为T'的比特位从左往右为[1,5,6,15],即M=4。则data为[1,5,6,15],延伸的(13*3有[1],[5],[6],[15],[1,5],[1,6],[1,15],[5,6],[5,15],[6,15],[1,5,6],[1,5,15],[1,6,15],[5,6,15],Q=l+4!/((4-l)!*1!)+4!/((4-2)!*2!)+4!八(4-3)!*3!)=15。则16比特数据块为"OlOOOllOOOOOOOOr时,具有15组data,该15组datable比特数据表示为%100011000000001,,、"0100000000000000,,、"0000010000000000,,、%000001000000000,,、%00000000000000r、"0100010000000000"、"0100001000000000"、%10000000000000r、%000011000000000"、%00001000000000r、%00000100000000r、%100011000000000"、%ioooioooooooo〇r、"oiooooioooooooor/'oooooiioooooooor。同时可见,随M的不同,延伸出来的data有不同长度,运也就是步骤2提到的可变索引项阵列指的是长度不同。上述延伸data的获得,利用下述算法建立整数集列表的算法完成,其中每个整数代表哪个比特位上包含文档。[0034]首先,将16比特数据转换为整数列表:Stepl:建立一张新的空整数列表,设置整数1=0;Step2:逐一比较比特位,若为"1",确定是哪个比特位,并加入到整数列表内;否则,进行下一仿比较。去.[0035]Step3:最终该列表包含所有具有"r的整数,该整数也就是具有文档的比特位的位序号。[0036]其次,利用递归算法计算所有可能延伸的da化。[0037]Stepl:设置"inputIntList"为输入整数列表,"resultSet"为整数设置集,每个集代表一个延伸的整数集。[0038]Step2:递归方程计算,对于整数列表的大小为1时,也就是M=I,则"resultSet"为"inputIntList";若整数列表的大小不为1时,在0到M-I的范围内,依次获得延伸的整数集。[0039]Step3:最终"resultSet"包含所有可能的整数集。[0040]Step4:获得"resultSet"中的整数列表,将每个整数列表转化为16比特数据。设置"inputIntList"为整数列表,"data"为初始值为0的16比特数据。[0041]最终获得多组16比特数据。[0042]步骤4:在哈希表内插入关键字值,所述关键字值为索引项。根据步骤3,可获得多组data,则具有多组关键字key,在W不同关键字k巧标识的哈希表内插入相应的关键字值。[0043]上述信息存储方法,可根据查询需要,根据哈希表,利用关键字查找到对应的16比特数据块,根据16比特数据块内存储的文档地址,快速获知索引项内的术语比重,可快速访问到所需信息。[0044]本发明信息查询方法基于上述信息存储方法实现:步骤1:解析查询并提取所查询的术语;步骤2:加载与所有术语相关的比特映射组;步骤3:根据查询术语,加载比特映射组内的16比特数据块,形成关键字,并根据哈希表查询术语的权重,最后进一步计算该文档的得分;步骤4:当查询的术语为多个时,继续步骤3,直至加载完成比特映射组内所有16比特数据块,进入步骤5;当查询的术语为1个时,结束。[0045]步骤5:通过文档得分,对前k候选文档进行排序。[0046]当进行逻辑与查询处理步骤时,具体为:步骤1:解析查询并提取所查询的术语tl,t2,…ti;步骤2:加载与所有术语相关的比特映射组;步骤3:对加载的比特映射组进行按位逻辑与运算,结果比特映射组包含前k候选文档的文档编号docid;步骤4:根据查询术语,加载比特映射组内的16比特数据块,形成关键字,并根据哈希表查询术语的权重,最后进一步计算该文档的得分;步骤5:继续步骤4,直至加载完成比特映射组内所有16比特数据块,进入步骤6。[0047]步骤6:通过文档得分,对前k候选文档进行排序。[004引当进行逻辑或查询处理步骤时,具体为:步骤1:解析查询并提取所查询的术语tl,t2,…ti;步骤2:加载与所有术语相关的比特映射组;步骤3:根据查询术语,加载比特映射组内的16比特数据块,形成关键字,并根据哈希表查询术语的权重,最后进一步计算该文档的得分;步骤4:继续步骤3,直至加载完成比特映射组内所有16比特数据块,进入步骤5。[0049]步骤5:通过文档得分,对前k候选文档进行排序。[0050]当进行逻辑非查询处理步骤时,具体为:步骤1:解析查询并提取所查询的术语tl和t2;步骤2:加载与术语tl和t2相关的比特映射组;步骤3:对加载的比特映射组进行按位逻辑非运算,结果比特映射组包含前k候选文档的文档编号docid;步骤4:加载比特映射组内的16比特数据块,形成关键字,并根据哈希表查询术语的权重,最后进一步计算该文档的得分。[0051]本发明所用上述信息存储方法、信息查询方法,利用2个或多个比特映射组进行按位逻辑运算,其运算速度大大提高。而利用上述信息存储方法、信息查询方法实现的捜索引擎装置,可快速有效查询所需术语,并适用多种逻辑查询需求。例如,64位逻辑运算可在64位CPU机器上完成。如果索引列表长度为m和n,则运算次数为0((m+n)/64)次,而传统交运算次数为〇(m+n)次,本发明大大减少了运算次数,提高运算效率。下表清楚显示了本发明和传统方案之间运算优劣。假定输入查询2个流行术语,采用逻辑或运算,并在64位CPU上进行。[0052]表1:传统方法与本发明方法性能比较对照表上面所述的实施例仅是对本发明的优选实施方式进行描述,并非对本发明的构思和范围进行限定。在不脱离本发明设计构思的前提下,本领域普通人员对本发明的技术方案做出的各种变型和改进,均应落入到本发明的保护范围,本发明请求保护的技术内容,已经全部记载在权利要求书中。【主权项】1.一种信息存储方法,其特征在于,步骤1:收集文档和术语信息,每个文档标识有文档编号docid,所述文档编号docid为不小于零的整数;步骤1.1:计算每个文档d的每个术语t的术语频率并保存;步骤1.2:建立文档频率撼翻>的全局表,其中,全局表为能够反映整个文档集中有多少文档包含某个术语的表,繼:m>为反映术语稀有性的文档频率;步骤2:建立索引;步骤2.1:对每个文档,根据术语频率tf:滅丨和文档频率·_语的权重步骤2.2:建立索引项数据结构,保存每个索引项,每个索引项存储文档编号docid、术语t和权重W;步骤2.3:建立比特映射组,保存每个术语t的文档编号docid,每个比特映射组内"Γ标识为某个文档编号docid下,该文档d包含术语t,"0"标识为某个文档编号docid下,该文档d不包含术语t,;步骤2.4:建立哈希表,所述哈希表由多个比特映射组内8*b比特数据块构成,每个8*b比特数据块以关键字n,标识,其中η不小于0,为8*b比特数据块的序号,data为8*b比特数据,每个8*b比特数据块存储有关键字值,所述关键字值为索引项数据结构内的索引项,其中b为大于0的整数。2.根据权利要求1所述的一种信息存储方法,其特征在于,所述步骤1通过正排索引步骤收集文档和术语信息。3.根据权利要求1所述的一种信息存储方法,其特征在于,所述步骤2通过倒排索引步骤建立索引。4.根据权利要求1所述的一种信息存储方法,其特征在于,所述步骤2.1,,其中N为文档的总数。5.根据权利要求1所述的一种信息存储方法,其特征在于,步骤2.4哈希表填充方法具体为:步骤2.4.1:对给定术语t,从比特映射中加载8*b比特数据块,加载具有文档编号docid的每个文档的相关术语权重:f步骤2.4.2:基于比特映射中的多组8*b比特数据块,建立可变索引项阵列;步骤2.4.3:形成关键字·;步骤2.4.4:在哈希表内插入关键字值。6.-种信息查询方法,用于基于比特映射和哈希表实现文档和术语存储的信息系统,其特征在于,步骤1:解析查询并提取所查询的术语;步骤2:加载与所有术语相关的比特映射组;步骤3:根据查询术语,加载比特映射组内的8*b比特数据块,形成关键字,并根据哈希表查询术语的权重,最后进一步计算该文档的得分,其中b为大于0的整数;步骤4:当查询的术语为多个时,继续步骤3,直至加载完成比特映射组内所有8*b比特数据块,进入步骤5;当查询的术语为1个时,结束,步骤5:通过文档得分,对前k候选文档进行排序。7.根据权利要求6所述的一种信息查询方法,其特征在于,在步骤2之后,步骤3之前,进行按位逻辑与运算:对加载的比特映射组进行按位逻辑与运算,结果比特映射组包含前k候选文档的文档编号docid。8.根据权利要求6所述的一种信息查询方法,其特征在于,在步骤2之后,步骤3之前,进行按位逻辑非运算:对加载的比特映射组进行按位逻辑非运算,结果比特映射组包含前k候选文档的文档编号docid。9.根据权利要求6所述信息查询方法,其特征在于,所述信息查询方法用于采用权利要求1-5之一的信息存储方法的信息系统。10.-种采用上述权利要求6-9之一信息查询方法的搜索引擎装置。【文档编号】G06F17/30GK105956203SQ201610499406【公开日】2016年9月21日【申请日】2016年6月30日【发明人】赵炜【申请人】湖州亿联信息技术有限公司,赵炜