一种支持全文检索系统同时检索数值类型数据域的方法
技术领域
本发明属于智能信息处理技术,具体涉及一种支持全文检索系统同时检索数值类型数据域的方法。
背景技术
随着计算机技术及网络技术的迅速发展,电子文档数目急剧增长。如何在这海量的信息里面快速、全面、准确地查找所需要的资料信息已经成为人们普遍关注的问题,也成了研究领域内的一个热门课题。大部分电子文档是用自然语言写成的非结构化的文本数据,全文检索技术是目前处理文本数据的重要手段。
全文检索有多种实现方式,包括倒排索引,后缀数组和签名文件等。
一般索引的对应关系是从“文档号”到“文档中所有的词”的对应。倒排索引把这种关系倒转过来,变成从“词”到“出现该词的所有文档号”,从而能快速地通过词检索到出现这些词的所有文档。实际应用中,倒排索引中通常还会包括词在文档中出现的次数以及具体位置等信息。为了方便检索,倒排表通常是有序的。
以下是倒排索引的举例:
设有两篇文章1和2:
文章1的内容为:Tom lives in Guangzhou,I live in Guangzhou too。
文章2的内容为:He once lived in Shanghai。
1)首先我们要取得这两篇文章的关键词,通常我们需要如下处理措施:
a.我们现在有的是文章内容,即一个字符串,我们先要找出字符串中的所有单词,即分词。英文单词由于用空格分隔,比较好处理。中文单词间是连在一起的需要特殊的分词处理。
b.文章中的”in”,“once”“too”等词没有什么实际意义,中文中的“的”“是”等字通常也无具体含义,这些不代表概念的词可以过滤掉。
c.用户通常希望查“He”时能把含“he”,“HE”的文章也找出来,所以所有单词需要统一大小写。
d.用户通常希望查“live”时能把含“lives”,“lived”的文章也找出来,所以需要把“lives”,“lived”还原成“live”。
e.文章中的标点符号通常不表示某种概念,也可以过滤掉。
经过上面处理后,文章1的所有关键词为:[tom][live][guangzhou][i][live][guangzhou]。
文章2的所有关键词为:[he][live][shanghai]。
2)有了关键词后,我们就可以建立倒排索引了。上面的对应关系是:“文章号”对“文章中所有关键词”。倒排索引把这个关系倒过来,变成:“关键词”对“拥有该关键词的所有文章号”。文章1,2经过倒排后变成:
关键词文章号
guangzhou 1
he 2
i 1
live 1,2
shanghai 2
tom 1
通常仅知道关键词在哪些文章中出现还不够,我们还需要知道关键词在文章中出现次数和出现的位置,通常有两种位置:a)字符位置,即记录该词是文章中第几个字符(优点是关键词亮显时定位快);b)关键词位置,即记录该词是文章中第几个关键词(优点是节约索引空间、词组(phase)查询快)。
加上“出现频率”和“出现位置”信息后,我们的索引结构变为:
关键词文章号[出现频率]出现位置:
guangzhou 1[2]3,6
he 2[1]1
i 1[1]4
live 1[2],2[1]2,5,2
shanghai 2[1]3
tom 1[1]1
以live这行为例我们说明一下该结构:live在文章1中出现了2次,文章2中出现了一次,它的出现位置为“2,5,2”这表示什么呢?我们需要结合文章号和出现频率来分析,文章1中出现了2次,那么“2,5”就表示live在文章1中出现的两个位置,文章2中出现了一次,剩下的“2”就表示live是文章2中第2个关键字。
后缀数组索引是由Manber和Myers在1993年提出的一个空间效率非常高的文本索引结构,这种结构记录了文本中各后缀的字典序索引,它把文本中的所有后缀按照词典序存放其在文本中起始位置的一个列表。
签名文档是指把文档中的关键词散列成F位的位串,顺序访问原文档的关键词,把散列所得的位串依次存入文件。
以下是其匹配思想:假设我们现在要判断字符串A和字符串B是否匹配,首先把A和B分别散列成数字hash(A)和hash(B),如果hash(A)!=hash(B)则A!=B;然而hash(A)=hash(B)不能说明A=B。
下面是具体的匹配例子:
关键词x[0..5]:A A C T C T Hash(x[0..5])=17579;
文本y[0..9]:G C A A C T C T C A Hash(y[0..5])=17819;
文本y[0..9]:G C A A C T C T C A Hash(y[1..6])=17533;
文本y[0..9]:G C A A C T C T C A Hash(y[2..7])=17579。
签名文件具有以下优点:
1)文件组织简单,基本和原文档顺序一致;
2)维护容易,生成,插入,删除都很方便;
3)所需空间小,特别是采用重叠编码之后。
其中倒排索引是应用最广泛的方式,它对于以单词为基础的查询具有很好的性能。
随着信息技术的广泛应用,越来越多的信息同时包括结构化信息内容和非结构化信息内容。例如:一篇论文既包括标题、作者、日期、页数等结构化数据,又包括论文正文这一非结构化信息。当前,被广泛应用的关系数据库系统面向的是结构化数据,而全文检索系统面向的是非结构化的数据。关系型数据库虽然能够进行文本数据的存储与检索,但其文本检索的效率非常低,难以满足海量文本数据快速检索的要求;而传统的全文检索不支持数值类型数据域的检索,更不能在检索条件中进行数值之间的大小比较或范围检索。目前,在很多应用中将结构化数据与非结构化数据分别存储与检索,通过应用系统将两者应用结合起来,这种方式不仅给应用系统带来很多的开发工作量,而且存在系统功能存在限制、效率不高的问题。
发明内容
本发明为全文系统提供一种同时支持数值类型数据域检索的方法,以便于全文检索系统可对数值类型的数据域进行存储与检索,以及进行数值的范围检索,从而使得全文检索系统可同时对结构化数据和非结构化数据进行处理。
本发明的具体实现方法为:在创建索引时,判断待建索引内容的数据域是否是数值类型,如是,提取其数据值,并转换成相应位串,将位串作为索引项加入索引表中;在检索时,进行以下操作:
1)读取检索条件;
2)将检索条件分解成数值类型检索部分和文本类型检索部分,并分别进行如下操作:
A:对数值类型检索部分提取检索条件中数据域的数据值,并转换成相应位串,形成由此位串作为检索项所界定的数值范围的检索条件;
B:对文本检索部分,采用传统的文本检索方法进行检索条件分析;
3)将上述得到的检索条件组合,检索出相应文档集并输出。
进一步,在创建索引时,对于待建索引中的非数值类型数据域,采取以下操作:
a:对非数值类型数据域的内容进行切分;
b:按传统全文检索方式,将切分后的字符串作为索引项加入到倒排索引中。
进一步,所述的对于数值类型检索条件的操作,具体包括以下步骤:
A1:对数值类型检索部分提取检索条件中数据域的数据值;
A2:将该数据值进行转换成相应的位串,使该位串的形式同建索引时转换得到的位串相一致;
A3:结合检索条件中的数值比较条件,形成由所述位串作为检索项所界定的数值范围的检索条件,所述比较条件包括但不限于数值的大小或范围。
进一步,在建索引以及检索过程中,采用倒排索引的方式进行。
进一步,所述位串根据数据值的具体类型将数值可转换成具有固定长度的位串或有序的位串。
进一步,所述位串是根据数据值的具体类型将数值转换成具有固定长度的有序的位串,是按照以下操作实现的:
A7:对于整数类型:将整数的第一位取反,根据IEEE标准的整数编码规范得出该串是4字节长度的有序的位串;
A8:对于浮点数类型:单精度浮点数用4字节的位串表示,双精度浮点数用8字节的位串表示,对于非负浮点数将其符号位取反,对于负浮点数将其每一位进行取反,根据IEEE标准的浮点数编码规范得出该串满足固定长度的有序的位串的条件要求;
A9:对于日期类型:采用6字节的位串,前2字节为距离某一固定日期的天数,后4字节为当天的总毫秒数;
A10:对于短整型、长整型、布尔型以及自定义长度整型等数据类型可采用类似于如上变换的方法。
本发明方法与现有技术的主要区别在于,本发明中通过将数值类型的数据值转换成具有固定长度的有序的位串作为索引项实现数值类型数据的快速索引与检索。由于索引项中位串是固定长度的,所以在倒排索引中可快速定位到索引项,又因为位串是有序的,所以数值条件在倒排索引中是一个连续的区间。从而实现了全文检索系统对数值类型数据域的支持。
本发明的效果在于:本发明通过将数值类型的数据值转换成具有固定长度的有序的位串作为索引项实现数值类型数据的快速索引与检索,使得全文检索系统可对数值类型的数据域进行存储与检索,以及进行数值的范围检索,从而达到了使全文检索系统可同时对结构化数据和非结构化数据进行处理的目的。实验表明,在普通PC环境下(CPU为P4 2.0G,内存为1.0GB),本发明实现的全文检索系统可同时对包括数值类型的结构化数据和非结构化的文本数据进行建索引和检索,可进行包括数值范围检索的混合检索。进一步的实验表明,该发明方法具有很好的效率,与单独进行文本数据建索引的速度非常接近,单独的数值检索的速度在亚秒级,混合条件检索的速度与文本检索的速度接近。
随着信息量爆炸性增长,信息检索的需要越来越深入,本发明的方法具有广泛的应用前景。
附图说明
图1是本发明建索引方法流程图;
图2是本发明检索方法流程图。
具体实施方式
下面结合附图对本发明的具体实施方式进行详细阐述。
本发明方法与现有技术的主要区别在于,本发明中通过将数值类型的数据值转换成具有固定长度的有序的位串作为索引项实现数值类型数据的快速索引与检索。由于索引项中位串是固定长度的,所以在倒排索引中可快速定位到索引项,又因为位串是有序的,所以数值条件在倒排索引中是一个连续的区间。从而实现了全文检索系统对数值类型数据域的支持。
本发明在普通PC环境下(CPU为P4 2.0G,内存为1.0GB)进行实验,按照本发明的方法实现支持数值类型数据域的全文检索系统,如图1及图2所示,是本发明建索引以及检索方法的流程图,具体包括以下步骤:
1)在建索引时,首先读取待建索引的内容;
2)判断待建索引内容的数据域是否是数值类型,如果是数值类型则进行步骤3,否则进行步骤6;
3)如果是数值类型数据域,则对数值类型数据域提取其数据值;
4)根据数据值的具体类型采用如下操作将该数值转换成具有固定长度的有序的位串;
a)对于整数类型:只要将整数的第一位取反即可,根据IEEE标准的整数编码规范可知该串是4字节长度的有序的位串;
b)对于浮点数类型:单精度浮点数用4字节的位串表示,双精度浮点数用8字节的位串表示,对于非负浮点数将其符号位取反,对于负浮点数将其每一位进行取反,根据IEEE标准的浮点数编码规范可知该串满足固定长度的有序的位串的条件要求;
c)对于日期类型:采用6字节的位串,前2字节为距离1900年1月1日的天数,后4字节为当天的总毫秒数;
5)将该位串作为索引项加入到倒排索引中,跳转到步骤8;
6)如果不是数值类型数据域,则对文本内容进行切分;
7)按传统全文检索方式,将切分后的字符串作为索引项加入到倒排索引中;
8)如果待建索引的内容中还有未建索引的,则跳转到步骤1,否则结束建索引过程;
9)在检索时,首先读取检索条件;
10)将检索条件分解成数值类型检索部分和文本类型检索部分,对数值类型检索部分采用步骤11,对文本类型检索部分采用步骤15;
11)对数值类型检索部分提取检索条件中数据域的数据值;
12)根据数值的具体类型将该数据值进行转换成具有固定长度的有序的位串(同步骤4);
13)结合检索条件中的数值比较条件(大小或范围),形成由这些位串作为检索项所界定的数值范围的检索条件;
14)对文本类型检索部分,采用传统的文本检索方法进行检索条件分析;
15)将数值类型检索条件和文本类型检索条件组合,利用倒排索引获得符合检索条件的文档集并输出。
上述将得到的检索条件组合,可以直接检索出相应的文档集,其结合点在于创建索引表和检索时都是将数值类型的数据项按同样的方式转换成了位串。
实验选用的数据是从因特网上抓取的新闻类中文网页,提取出网页的新闻内容作为文本文件,每个文件为一篇新闻稿件,共100万篇,共2.68GB。对这些文件的文件名、文件时间、文件大小和文件正文建索引和检索实验。
对这些文档建索引总共耗时4小时28分钟,作为对比,实验中仅对文件名和文件正文建索引,总共耗时4小时16分钟。实验结果表明,全文检索系统增加了文件时间和文件大小两个数值类型的数据域,但建索引的时间开销只有少量的增加。
为了验证采用本发明方法的全文检索系统能支持数值类型数据域的检索,而且检索的效率是非常高效的,实验中我们进行了如下检索实验:
检索条件 | 结果个数 | 检索时间(秒) |
文件大小在1,000字节到2,000字节之间 | 239,737 | 0.11 |
文件大小大于10,000字节 | 2,487 | 0.08 |
文件大小在1,000字节到2,000字节并且 | 32,652 | 0.16 |
文件时间在2006-5-29到2006-5-30之间 | | |
文件正文中包含“计算机”和“中国” | 13,834 | 0.62 |
文件大小在1,000字节到2,000字节并且文件时间在2006-5-29到2006-5-30之间并且文件正文中包含“计算机”和“中国” | 391 | 0.71 |
本发明的效果在于:本发明通过将数值类型的数据值转换成具有固定长度的有序的位串作为索引项实现数值类型数据的快速索引与检索,使得全文检索系统可对数值类型的数据域进行存储与检索,以及进行数值的范围检索,从而达到了使全文检索系统可同时对结构化数据和非结构化数据进行处理的目的。
通过以上实验表明,在普通PC环境下(CPU为P4 2.0G,内存为1.0GB),本发明实现的全文检索系统可同时对包括数值类型的结构化数据和非结构化的文本数据进行建索引和检索,可进行包括数值范围检索的混合检索。进一步的实验表明,该发明方法具有很好的效率,与单独进行文本数据建索引的速度非常接近,单独的数值检索的速度在亚秒级,混合条件检索的速度与文本检索的速度接近。
从检索实验的实验结果可以看出,按照本发明方法实现的全文检索系统,可进行数值类型数据域的检索以及文本域与数值域的混合检索,从检索时间来看,检索效率是非常高的。
综合以上实验结果,本发明提出的方法实现了全文检索系统对数值类型数据域的支持,并且具有很好的建索引和检索效率,很好地解决了全文检索系统对结构化数据支持的问题。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。