一种搜索引擎索引功能的测试方法和装置制造方法

文档序号:6487669阅读:206来源:国知局
一种搜索引擎索引功能的测试方法和装置制造方法
【专利摘要】本申请提供了一种搜索引擎索引功能的测试方法和装置,其中的方法具体包括:利用新版本搜索引擎对基准数据进行索引,得到相应新版索引文件;其中,新版本搜索引擎为待测试的搜索引擎;将旧版索引文件和所述新版索引文件作为文件流进行内容的对比,若相同则测试通过,若不同则测试不通过;其中,旧版索引文件为利用旧版本搜索引擎对所述基准数据进行索引得到。本申请能够提高搜索引擎索引功能的测试效率。
【专利说明】一种搜索引擎索引功能的测试方法和装置
【技术领域】
[0001]本申请涉及互联网【技术领域】,特别是涉及一种搜索引擎索引功能的测试方法和装置。
【背景技术】
[0002]搜索引擎是指根据一定的策略,运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统,其所实现的功能概括来说就是数据预处理、建立索引和接受查询请求并返回结果。其中,数据预处理是指根据搜索引擎要求,把经各种渠道获得的数据转化为结构化数据;建立索引是指根据结构化数据中的各种字段建立相应的索引;接受查询请求并返回结果是指使用查询关键词对建立的索引进行检索,并返回检索到的索引所指向的结构化数据。
[0003]一般来说,搜索引擎版本的更新是很频繁的,而在每次更新完毕后都要对更新后的搜索引擎(相对于更新前的旧版本搜索引擎,更新完毕后的搜索引擎可以称为新版本搜索引擎)进行功能和性能测试以判断其是否满足功能与性能要求。
[0004]现有技术一种搜索引擎索引功能的测试方法,通过检索的间接手段来完成搜索引擎索引功能的测试;该间接检索预置检索结果和相应的检索条件,并依据该检索条件在索引的结构化数据下进行相关的检索,并通过对比实际检索结果和预置检索结果,若二者相同则测试通过,否则测试不通过。
[0005]为了保证测试的覆盖率,现有技术的间接检索需要遍历所有的索引;然而搜索引擎的索引数目众多,且单个索引下面的数据记录的数量也巨大,在实际应用中,间接检索需要对数亿条数据记录进行逐个的检索,导致测试时间的增加和测试效率的降低。而目前敏捷开发导致搜索引擎版本的更新周期缩短到3天甚至更短,故现有技术在测试效率上很难满足搜索引擎版本的更新速度的要求。
[0006]总之,需要本领域技术人员迫切解决的一个技术问题就是:如何能够提高搜索引擎索引功能的测试效率。

【发明内容】

[0007]本申请所要解决的技术问题是提供一种搜索引擎索引功能的测试方法和装置,能够提高搜索引擎索引功能的测试效率。
[0008]为了解决上述问题,本申请公开了一种搜索引擎索引功能的测试方法,包括:
[0009]利用新版本搜索引擎对基准数据进行索引,得到相应新版索引文件;其中,新版本搜索引擎为待测试的搜索引擎;
[0010]将旧版索引文件和所述新版索引文件作为文件流进行内容的对比,若相同则测试通过,若不同则测试不通过;其中,旧版索引文件为利用旧版本搜索引擎对所述基准数据进行索引得到。
[0011]优选的,所述将旧版索引文件和新版索引文件作为文件流进行内容的对比的步骤进一步包括:
[0012]将旧版索引文件和新版索引文件作为文件流,进行全部或部分内容的对比。
[0013]优选的,所述将旧版索引文件和新版索引文件作为文件流,进行部分内容的对比的步骤,进一步包括:
[0014]分别提取旧版索引文件流和新版索引文件流的若干个相同位置区间的数据;所述相同位置区间用于表示从所述旧版索引文件流和新版索引文件流提取数据时采用的区间位置相同;
[0015]分别对所述旧版索引文件流和新版索引文件流的若干个相同位置区间的数据进行比较,在所有相同位置区间的数据比较结果均为相同时测试通过,在相同位置区间的数据比较结果中存在不同时测试不通过。
[0016]优选的,可以通过下列步骤提取文件流上区间的数据:
[0017]获取文件流的文件指针;
[0018]通过文件指针偏移的方式确定区间的起端位置,并依据文件指针从区间的起端位置起读取文件流上长度与区间长度相应的数据。
[0019]优选的,可以通过下列步骤获取区间的起端位置:
[0020]依据预置的区间个数、区间长度和区间间隔长度,获取各区间的起端位置;所述获取过程包括:将在前区间的起始位置与在前区间的区间长度及在前区间与在后区间的区间间隔长度之和作为在后区间的起端位置。
[0021]优选的,可以通过下列步骤获取区间的起端位置:
[0022]确定文件流长度和区间个数;
[0023]产生数值在文件流长度范围内的数量与二倍于区间个数相应的随机数;
[0024]依据所述随机数获取各区间的起始位置。
[0025]优选的,所述文件流为文本流或者二进制流。
[0026]另一方面,本申请还公开了一种搜索引擎索引功能的测试装置,包括:
[0027]索引模块,用于利用新版本搜索引擎对基准数据进行索引,得到相应新版索引文件;其中,新版本搜索引擎为待测试的搜索引擎;
[0028]对比模块,用于将旧版索引文件和所述新版索引文件作为文件流进行内容的对t匕,若相同则测试通过,若不同则测试不通过;其中,旧版索引文件为利用旧版本搜索引擎对所述基准数据进行索引得到。
[0029]优选的,所述对比模块进一步包括:
[0030]全部对比子模块,用于将旧版索引文件和新版索引文件作为文件流,进行全部内容的对比;或者
[0031]部分对比子模块,用于将旧版索引文件和新版索引文件作为文件流,进行部分内容的对比。
[0032]优选的,所述部分对比子模块进一步包括:
[0033]区间提取单元,用于分别提取旧版索引文件流和新版索引文件流的若干个相同位置区间的数据;所述相同位置区间用于表示从所述旧版索引文件流和新版索引文件流提取数据时采用的区间位置相同;及
[0034]比较单元,用于分别对所述旧版索引文件流和新版索引文件流的若干个相同位置区间的数据进行比较,在所有相同位置区间的数据比较结果均为相同时测试通过,在相同位置区间的数据比较结果中存在不同时测试不通过。
[0035]优选的,所述装置还包括:用于提取文件流上区间的数据的文件流区间数据提取模块;
[0036]所述文件流区间数据提取模块进一步包括:
[0037]指针获取子模块,用于获取文件流的文件指针;及
[0038]读取子模块,用于通过文件指针偏移量的方式确定区间的起端位置,并依据文件指针从区间的起端位置起读取文件流上长度与区间长度相应的数据。
[0039]优选的,所述装置还包括:用于获取区间的起端位置的起端位置获取模块;
[0040]所述起端位置获取模块进一步包括:
[0041]预置获取子模块,用于依据预置的区间个数、区间长度和区间间隔长度,获取各区间的起端位置;所述获取过程包括:将在前区间的起始位置与在前区间的区间长度及在前区间与在后区间的区间间隔长度之和作为在后区间的起端位置。
[0042]优选的,所述装置还包括:用于获取区间的起端位置的起端位置获取模块;
[0043]所述起端位置获取模块进一步包括:
[0044]确定子模块,用于确定文件流长度和区间个数;
[0045]随机数子模块,用于产生数值在文件流长度范围内的数量与二倍于区间个数相应的随机数;
[0046]随机获取子模块,用于依据所述随机数获取各区间的起始位置。
[0047]优选的,所述文件流为文本流或者二进制流。
[0048]与现有技术相比,本申请具有以下优点:
[0049]本申请利用新版本搜索引擎对基准数据进行索引,得到相应的新版索引文件,并基于文件流对比的方式对旧版索引文件和新版索引文件进行测试,得到相应的测试结果;本申请只需将旧版索引文件和所述新版索引文件作为文件流进行内容的对比即可完成新版本搜索引擎索引功能的测试,由于能够避免现有技术中对数亿条数据记录进行逐个的检索,因此能够有效提高搜索引擎索引功能的测试效率。
【专利附图】

【附图说明】
[0050]图1是本申请一种搜索引擎索引功能的测试方法实施例的流程图;
[0051]图2是本申请一种搜索引擎索引功能的测试装置实施例的结构图。
【具体实施方式】
[0052]为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本申请作进一步详细的说明。
[0053]参照图1,示出了本申请一种搜索引擎索引功能的测试方法实施例的流程图,具体可以包括:
[0054]步骤101、利用新版本搜索引擎对基准数据进行索引,得到相应新版索引文件;其中,新版本搜索引擎为待测试的搜索引擎;
[0055]本【技术领域】内,公知的是,索引技术是搜索引擎的核心技术之一。搜索引擎要对所收集到的信息进行整理、分类、索引以产生索引库;通常索引库用于存储根据结构化数据中的各种字段建立相应的索引,索引文件用于存储索引到被索引的原始数据的联系。
[0056]本申请采用基准数据作为被索引的原始数据,其可以是各种结构化数据或非结构化数据;例如,结构化数据的一种示例为数据库的行数据,也即数据记录;非结构化的一种示例为互联网文章,其它结构化数据或非结构化数据的示例相互参照即可。
[0057]在本申请的一种应用示例中,利用搜索引擎对基准数据进行索引,得到相应的索引文件的过程可以进一步包括:对基准数据进行分词;在分词结果中查找与索引相应的词,并记录索引到基准数据的联系信息到索引文件。
[0058]其中,分词技术是利用一定的规则和词库,切分出一个句子中的词,为自动索引做好准备,在此不作赘述。索引到基准数据的联系信息通常可以包括匹配到词的标识信息和该词在基准数据中的位置信息等等。
[0059]以结构化数据为例,假设基准数据存储于数据库中,索引为“中国”,某条数据记录的内容包括“中国共产党”,则可以对“中国共产党”进行分词得到“中国”和“共产党”,并记录该条数据记录的字段名称、数据记录编号和“中国”在该条数据记录中的位置到“中国”的索引文件。
[0060]以非结构化数据为例,假设索引为“房地产”,基准数据包括文章A、B、C,其中文章B,C中都包含“房地产”,A中包含“中国”,则“房地产”的索引文件中可以记录文章B、文章B中“房地产”的位置,文章C、文章C中“房地产”的位置等信息。
[0061]步骤102、将旧版索引文件和所述新版索引文件作为文件流进行内容的对比,若相同则测试通过,若不同则测试不通过;其中,旧版索引文件为利用旧版本搜索引擎对所述基准数据进行索引得到。
[0062]本申请实施例中,假设新版本搜索引擎的版本编号为N,则旧版本搜索引擎的版本编号可以为[1,N-1]内的任一自然数。
[0063]在本申请的一种实施例中,可以利用旧版本搜索引擎对所述基准数据进行索引得到所述旧版索引文件,并保存至相应的数据结构;这样,每次进行搜索引擎索引功能的测试时,只需从所述数据结构中取出所述旧版索引文件即可。
[0064]在本申请的另一种实施例中,可以在每次进行搜索引擎索引功能的测试时,利用旧版本搜索引擎对所述基准数据进行索引得到所述旧版索引文件。
[0065]文件流是对文件进行操作的统一接口,文件可以转换为流的逻辑设备,流屏蔽了设备的具体特性,所以,应用程序可以相同的形式对各种文件进行操作。
[0066]通常,文件流具有两种模式:文本流和二进制流。其中,文本流是把文件当作一个字符流,在某些语言中,对文本流进行操作时,会作一些转换,也就是说,文本流屏蔽了文件的实质内容;二进制流与文件中的内容是一一对应的一连串字节构成的。在对文件进行存取时,可以混合使用这两种流模式,但通常使用同一种流模式来对文件进行存取。
[0067]在具体实现中,可以基于语言的open(打开)方法将索引文件转换为文件流。
[0068]例如,可以基于Python语言的open方法得到二进制流或文本流,其中,indexdata为文件名:
[0069]1.以二进制流打开 filestream = open(' /indexdata' , 1 rb1 )
[0070]2.以文本流打开 filestream = open(' /indexdata' , ' r')[0071]又如,在C++的fstream类中,有一个用于打开文件的成员函数open(),其原型是:
[0072]void open (const char*filename, int mode, int access);
[0073]参数:
[0074]filename:要打开的文件名
[0075]mode:要打开文件的方式
[0076]access:打开文件的属性
[0077]打开文件的方式在类ios中定义,常用的值ios::binary:以二进制方式打开文件,缺省的方式是文本方式。
[0078]如果想以二进制输入方式打开文件c: config.sys,则可以执行如下语句:
[0079]fstream filel ;
[0080]filel.0pen(〃 c:config.sys" ,ios:: binary|ios::1n,0);
[0081]需要说明的是,上述Python、C++语目只是作为不例,但并不作为本申请的应用限制;实际上,基于Java、Php、VB等语言的open方法将索引文件转换为文件流,也是可行的。
[0082]本申请实施例中,因为被索引的基准数据集是已知确定的,理论上采用两个版本的搜索引擎索引同样的基准数据集,得到的索引文件也应该是同样的,对同样的索引文件进行文件流处理,其据此形成的文件流应该也是一样的,故本申请基于文件流对比的方式对旧版索引文件和新版索引文件进行测试,不仅能够达到测试的准确性和细粒度的要求;更重要的是,本申请只需基于文件流对`比的方式对比丨日版索引文件和新版索弓丨文件的内容即可完成新版本搜索引擎索引功能的测试,由于能够避免现有技术中对数亿条数据记录进行逐个的检索,因此能够有效提高搜索引擎索引功能的测试效率。
[0083]在本申请实施例中,所述步骤102可以进一步包括:将旧版索引文件和新版索引文件作为文件流,进行全部或部分内容的对比。
[0084]关于将旧版索引文件和新版索引文件作为文件流,进行全部内容的对比的方案,在具体实现中,可以以文件流的方式分别从所述旧版索引文件和新版索引文件中读取全部的数据,然后对二者的读取结果进行比较即可。其中,Python、C++、Java、Php、VB等语言均提供了用于读取指定大小的数据的函数,及用于比较两项数据内容是否相等的函数。
[0085]在此对将旧版索引文件和新版索引文件作为文件流,进行部分内容的对比的方案进行详细说明。
[0086]在本申请的一种优选实施例中,所述将旧版索引文件和新版索引文件作为文件流,进行全部或部分内容的对比的步骤,可以进一步包括:
[0087]子步骤Al、分别提取旧版索引文件流和新版索引文件流的若干个相同位置区间的数据;所述相同位置区间用于表示从所述旧版索引文件流和新版索引文件流提取数据时采用的区间位置相同;
[0088]子步骤A2、分别对所述旧版索引文件流和新版索引文件流的若干个相同位置区间的数据进行比较,在所有相同位置区间的数据比较结果均为相同时测试通过,在相同位置区间的数据比较结果中存在不同时测试不通过。
[0089]本申请实施例中,可采用上述基于语言的open(打开)方法将旧版索引文件和新版索引文件转换为旧版索引文件流和新版索引文件流。[0090]在具体实现中,可以基于语言的比较方法比较相同位置区间的数据。
[0091]例如,C++语言的 extern int memcmp (void*buf I, void*buf2, unsigned intcount);
[0092]用法:#include〈string.h>
[0093]功能:比较内存区域buf I和buf2的前count个字节。
[0094]说明:当buf I < buf2时,返回值< 0
[0095]当 buf I = buf2 时,返回值=0
[0096]当 bufl > buf2 时,返回值> 0
[0097]又如Python 的 cmp (filestreaml, filestream2)函数也可以对 fiIestreaml 和filestream2两块数据进行比较,若相等则返回0,若不等则返回非O。Java>Php>VB等语言的相关参数相互参照即可。
[0098]需要说明的是,在存在一个以上相同位置区间时,在所有区间的大小为内存最小单元的整数倍的数据比较结果均为0时,才可认为测试通过,在相同位置区间的数据比较结果中存在非0值时,即可认为测试不通过。
[0099]如果将一个文件流看做一个全序集T,全序集T用于囊括文件流的全部内容,则本申请的区间可以理解为全序集的子集S,子集S用于囊括文件流的部分内容。
[0100]在具体实现中,假设文件流的长度为L (这里L的单位可用字节、位等描述),则全序集T可用[0,L-1]的闭区间来表示,那么,本申请的区间可以为[0,L-1]的子集。
[0101]由于相同位置区间的数据才有可比性,故本申请采用“相同位置区间”这个技术术语,意在强调需要从所述旧版索引文件流和新版索引文件流的相同位置区间提取数据。
[0102]在本申请的一种优选实施例中,可以通过下列步骤提取文件流上区间的数据:
[0103]子步骤B1、获取文件流的文件指针;
[0104]子步骤B2、通过文件指针偏移的方式确定区间的起端位置,并依据文件指针从区间的起端位置起读取文件流上长度与区间长度相应的数据。
[0105]其中,所述文件指针偏移用于将文件指针偏移至区间的起端位置。
[0106]假设以文件流的起点为0标记点,则可以通过读文件指针+偏移量的方式来确定一个区间的起端位置;也即,所述文件指针偏移用于将文件指针从当前位置偏移至区间的起端位置。
[0107]例如,C++语言提供的函数int fseek(FILE*stream, long offset, int origin)可以将文件指针从一个位置偏移到另一个位置,其中,
[0108]第一个参数stream为文件指针
[0109]第二个参数offset为偏移量,正数表示正向偏移,负数表示负向偏移
[0110]第三个参数origin设定从文件的哪里开始偏移
[0111]又如,C++提供的函数string fread(int handle, int length)能够从文件指针读取length个字节的数据。
[0112]同理,Python的seek()、read()函数也可以实现类似fseek()和fread()的功能,seek (long offset, int origin)可用于将文件指针从一个位置origin偏移到另一个位置origin+off set, read (int length)用于从文件指针位置起读取length个字节的数据。另夕卜,Java、Php、VB等语言的相关参数相互参照即可,在此不作赘述。[0113]在实际应用中,本申请实施例中的区间具有如下属性:
[0114]属性1、区间个数;
[0115]区间的数目可以为一个,可以为一个以上。
[0116]在仅存在一个区间时,所述文件指针偏移用于将文件指针从文件流的起点位置偏移至区间的起端位置。假设文件流的起点为0标记点,则可以将文件指针偏移至A以确定区间的起端位置,然后从位置A起读取长度B的数据即可,该区间可以表示为[0+A、0+A+B],在不特殊说明的情况下,本申请实施例中的A、B、C、D等表示偏移量,均为正整数。
[0117]在存在一个以上区间时,需要确定多个区间的起端位置,所述文件指针偏移用于将文件指针从当前位置偏移至第一区间的起端位置,以及,将文件指针从第一区间的起端位置偏移至第二区间的起端位置。
[0118]假设针对第一区间,区间的起端位置为0+A,预置区间长度为B,则第一个区间可以表示为[0+A、0+A+B],可以读取[0+A、0+A+B]这一段长度为B的数据;针对第二区间,区间的起端位置为0+A+B+C,预置区间长度为D,则第二区间可以表示为[0+A+B+C、0+A+B+C+D],可以读取[0+A+B+C、0+A+B+C+D]这一段长度为D的数据。
[0119]假设文件指针的起始点为0,则与上述一个以上区间相应的读取过程包括:
[0120]步骤S1、通过seek(A,0)函数将文件指针偏移至A ;
[0121]步骤S2、通过read (B)函数从位置A起读取B长度的数据;
[0122]步骤S3、通过seek(B+C,A)函数将文件指针偏移至A+B+C ;
[0123]步骤S4、通过read (D)函数从位置A+B+C起读取D长度的数据。
[0124]属性2、区间长度;
[0125]对一个区间而言,可以用其区间的起端位置和末端位置的绝对值表示区间长度,可以直接从区间的起端位置起读取区间长度的数据。例如,[0+A、0+A+B]、[0+A+B、0+A+B+C]、[0+A+B+C、0+A+B+C+D]的区间长度分别为 B、C、D。
[0126]需要说明的是,一个文件流上若干个区间的长度可以相等或不等,也即,本领域技术人员可以根据实际需要,设置B、C、D为相等或不等。
[0127]另外,本领域技术人员可以根据实际需要,设置区间长度的大小为内存最小单元的整数倍。
[0128]属性3、区间间隔。
[0129]本申请实施例的区间间隔可以表示为相邻区间之间的间隔,具体可用在后区间的起端位置与在前相同位置区间的末端位置的差值表示。例如,[0+A、0+A+B]和[0+A+B、0+A+B+C]的区间间隔为 0,[0+A.0+A+B]和[0+A+B+C.0+A+B+C+D]的区间间隔为 C。
[0130]相对于全部内容的对比,部分内容的对比具有如下优点:
[0131]1、由于部分内容的长度肯定小于全部内容的长度的,在对比的内容长度小的情况下,对比效率会提高,对比时间会减少,从而能够进一步提高搜索引擎索引功能的测试效率;
[0132]2、全部内容是固定的、一成不变的,而区间个数、区间长度和区间间隔中任一发生变化都会引起部分内容的变化,故部分内容是灵活的:区间个数可多可少,区间长度可大可小、区间布置可疏可密等等;总之,本领域技术人员可以根据实际需求,调整区间个数、区间长度和区间间隔中的一项或多项,以达到部分内容的对比的灵活实施。[0133]需要说明的是,由于被索引的基准数据集是已知确定的,理论上采用两个版本的搜索引擎索引同样的基准数据集,得到的索引文件也应该是同样的,对同样的索引文件进行文件流处理,其据此形成的文件流应该也是一样的,故本申请基于文件流部分内容对比的方式对旧版索引文件和新版索引文件进行测试,仍然能够达到测试的准确性和细粒度的要求;
[0134]更重要的是,由于部分内容的长度肯定小于全部内容的长度的,在对比的内容长度小的情况下,对比效率会提高,对比时间会减少,从而能够进一步提高搜索引擎索引功能的测试效率。
[0135]需要说明的是,本领域技术人员可以根据实际需要,设置一个文件流上若干个区间之间的间隔相等或不等。
[0136]本申请可用提供下列获取区间的起端位置的方案:
[0137]方案1、
[0138]在本申请的一种优选实施例中,可以依据预置的区间个数、区间长度和区间间隔长度,获取各区间的起端位置;具体而言,可以将在前区间的起始位置与在前区间的区间长度及在前区间与在后区间的区间 间隔长度之和作为在后区间的起端位置。
[0139]在本申请的一种应用示例中,可以预置所有区间的区间长度相等,以及,所有相邻区间的区间间隔相等。假设文件流的长度为100,也即文件流的全序集T可用[0,99]的闭区间来表示,那么可以预置区间个数为10,区间长度为2,区间间隔为8 ;—种区间的起端位
置的示例可为0+2、0+2+2+8、0+2+2+8+2+8......,这样,形成的10个区间可表示为[2,4],
[12,14],[22,24]......[92,94] ?
[0140]在本申请的一种应用示例中,可以预置所述区间的区间长度为等差数列,以及,所有相邻区间的区间间隔呈等差数列。假设文件流的长度为100,也即文件流的全序集T可用[0,99]的闭区间来表示,那么可以预置区间个数为8,预置第一个区间的区间长度为2,随后的区间长度递增,公差为1,以及预置第一个区间和第二个区间的区间间隔为2,随后的区间间隔递增,公差为2 ;则一种区间的起端位置的示例可以为0+2、0+2+2+2、
0+2+2+2+2+1+2+2,0+2+2+2+2+1+2+2+2+1+1......,这样,形成的10个相同位置区间可以
表示为[2,4], [6,9], [13,17],[23,28], [36,42], [52,59], [70,78], [90,99] ?
[0141]当然,上述只是作为示例,本领域技术人员可以根据实际需求,预置各种区间个数、区间长度和区间间隔长度。例如,如果希望提高测试的准确率,可以预置尽量多的区间个数,尽量大的区间长度和尽量小的区间间隔长度;又如,如果希望提高测试效率,则可以预置尽量少的区间个数、尽量小的区间长度和尽量大的区间间隔长度;再如,可以预置合适的区间个数、区间长度和区间间隔长度,以达到测试准确率和测试效率的最优等等。本申请对具体的区间个数、区间长度和区间间隔长度的预置方式不加以限制。
[0142]方案2、
[0143]在本申请的另一种优选实施例中,所述获取区间的起端位置的方案步骤,可以进一步包括:
[0144]子步骤Cl、确定文件流长度和区间个数;
[0145]子步骤C2、产生数值在文件流长度范围内的数量与二倍于区间个数相应的随机数;[0146]子步骤C3、依据所述随机数获取各区间的起始位置。
[0147]在本申请的一种应用示例中,所述子步骤C3可以进一步包括:对所述随机数进行奇偶编号,相邻偶编号随机数与奇编号随机数之差为区间长度,将奇编号的随机数作为区间的起端位置。
[0148]假设文件流长度为L,区间个数为M,则可以采用随机算法产生[0,L_1]内的2M个随机数,假设2M个随机数的编号为1,2,3,。。。,2M-L2M,那么编号2与I的随机数的差为区
间长度,编号4与3的随机数的差为区间长度,并且可以依据该编号为1,3,5......2M-3,
2M-1的随机数作为区间的起端位置。
[0149]当然上述只是作为示例,也可以将偶编号的随机数作为区间的起端位置
[0150]需要说明的是,上面以语言的打开、获取、比较方法为例对本申请的文件流操作进行了说明,实际上,本申请并不限制于特定的语言及语言中的特定函数,其它的任意的能够实现文件流操作的函数、方法等技术手段都是可行的。
[0151]与前述方法实施例相应,本申请还公开了一种搜索引擎索引功能的测试装置实施例,参照图2所示的结构图,具体可以包括:
[0152]索引模块201,用于利用新版本搜索引擎对基准数据进行索引,得到相应新版索引文件;其中,新版本搜索引擎为待测试的搜索引擎 '及
[0153]对比模块202,用于将旧版索引文件和所述新版索引文件作为文件流进行内容的对比,若相同则测试通过,若不同则测试不通过;其中,旧版索引文件为利用旧版本搜索引擎对所述基准数据进行索引得到。
[0154]在本申请实施例中,优选的是,所述文件流为文本流或者二进制流。
[0155]在本申请的一种优选实施例中,所述对比模块202可以进一步包括:
[0156]全部对比子模块,用于将旧版索引文件和新版索引文件作为文件流,进行全部内容的对比;或者
[0157]部分对比子模块,用于将旧版索引文件和新版索引文件作为文件流,进行部分内容的对比。
[0158]在本申请的另一种优选实施例中,所述部分对比子模块可以进一步包括:
[0159]区间提取单元,用于分别提取旧版索引文件流和新版索引文件流的若干个相同位置区间的数据;所述相同位置区间用于表示从所述旧版索引文件流和新版索引文件流提取数据时采用的区间位置相同;及
[0160]比较单元,用于分别对所述旧版索引文件流和新版索引文件流的若干个相同位置区间的数据进行比较,在所有相同位置区间的数据比较结果均为相同时测试通过,在相同位置区间的数据比较结果中存在不同时测试不通过。
[0161]在本申请的再一种优选实施例中,所述装置还包括用于提取文件流上区间的数据的文件流区间数据提取模块;
[0162]所述文件流区间数据提取模块可以进一步包括:
[0163]指针获取子模块,用于获取文件流的文件指针;
[0164]读取子模块,用于通过文件指针偏移量的方式确定区间的起端位置,并依据文件指针从区间的起端位置起读取文件流上长度与区间长度相应的数据。
[0165]在本申请的一种优选实施例中,所述装置还可以包括:用于获取区间的起端位置的起端位置获取模块;
[0166]所述起端位置获取模块可以进一步包括:
[0167]预置获取子模块,用于依据预置的区间个数、区间长度和区间间隔长度,获取各区间的起端位置;所述获取过程包括:将在前区间的起始位置与在前区间的区间长度及在前区间与在后区间的区间间隔长度之和作为在后区间的起端位置。
[0168]在本申请的另一种优选实施例中,所述装置还可以包括:用于获取区间的起端位置的起端位置获取模块;
[0169]所述起端位置获取模块可以进一步包括:
[0170]确定子模块,用于确定文件流长度和区间个数;
[0171]随机数子模块,用于产生数值在文件流长度范围内的数量与二倍于区间个数相应的随机数;
[0172]随机获取子模块,用于依据所述随机数获取各区间的起始位置。
[0173]对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0174]本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0175]本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0176]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0177]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0178]尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
[0179]本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。[0180]以上对本申请所提供的一种搜索引擎索引功能的测试方法和装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
【权利要求】
1.一种搜索引擎索引功能的测试方法,其特征在于,包括: 利用新版本搜索引擎对基准数据进行索引,得到相应新版索引文件;其中,新版本搜索引擎为待测试的搜索引擎; 将旧版索引文件和所述新版索引文件作为文件流进行内容的对比,若相同则测试通过,若不同则测试不通过;其中,旧版索引文件为利用旧版本搜索引擎对所述基准数据进行索引得到。
2.如权利要求1所述的方法,其特征在于,所述将旧版索引文件和新版索引文件作为文件流进行内容的对比的步骤进一步包括: 将旧版索引文件和新版索引文件作为文件流,进行全部或部分内容的对比。
3.如权利要求2所述的方法,其特征在于,所述将旧版索引文件和新版索引文件作为文件流,进行部分内容的对比的步骤,进一步包括: 分别提取旧版索引文件流和新版索引文件流的若干个相同位置区间的数据;所述相同位置区间用于表示从所述旧版索引文件流和新版索引文件流提取数据时采用的区间位置相同; 分别对所述旧版索引文件流和新版索引文件流的若干个相同位置区间的数据进行比较,在所有相同位置区间的数据比较结果均为相同时测试通过,在相同位置区间的数据比较结果中存在不同时测试不通过。
4.如权利要求3所述的方法,其特征在于,通过下列步骤提取文件流上区间的数据: 获取文件流的文件指针; 通过文件指针偏移的方式确定区间的起端位置,并依据文件指针从区间的起端位置起读取文件流上长度与区间长度相应的数据。
5.如权利要求4所述的方法,其特征在于,通过下列步骤获取区间的起端位置: 依据预置的区间个数、区间长度和区间间隔长度,获取各区间的起端位置;所述获取过程包括:将在前区间的起始位置与在前区间的区间长度及在前区间与在后区间的区间间隔长度之和作为在后区间的起端位置。
6.如权利要求4所述的方法,其特征在于,通过下列步骤获取区间的起端位置: 确定文件流长度和区间个数; 产生数值在文件流长度范围内的数量与二倍于区间个数相应的随机数; 依据所述随机数获取各区间的起始位置。
7.如权利要求1至6中任一项所述的方法,其特征在于,所述文件流为文本流或者二进制流。
8.一种搜索引擎索引功能的测试装置,其特征在于,包括: 索引模块,用于利用新版本搜索引擎对基准数据进行索引,得到相应新版索引文件;其中,新版本搜索引擎为待测试的搜索引擎; 对比模块,用于将旧版索引文件和所述新版索引文件作为文件流进行内容的对比,若相同则测试通过,若不同则测试不通过;其中,旧版索引文件为利用旧版本搜索引擎对所述基准数据进行索引得到。
9.如权利要求8所述的装置,其特征在于,所述对比模块进一步包括: 全部对比子模块,用于将旧版索引文件和新版索引文件作为文件流,进行全部内容的对比;或者 部分对比子模块,用于将旧版索引文件和新版索引文件作为文件流,进行部分内容的对比。
10.如权利要求9所述的装置,其特征在于,所述部分对比子模块进一步包括: 区间提取单元,用于分别提取旧版索引文件流和新版索引文件流的若干个相同位置区间的数据;所述相同位置区间用于表示从所述旧版索引文件流和新版索引文件流提取数据时采用的区间位置相同;及 比较单元,用于分别对所述旧版索引文件流和新版索引文件流的若干个相同位置区间的数据进行比较,在所有相同位置区间的数据比较结果均为相同时测试通过,在相同位置区间的数据比较结果中存在不同时测试不通过。
11.如权利要求10所述的装置,其特征在于,还包括:用于提取文件流上区间的数据的文件流区间数据提取模块; 所述文件流区间数据提取模块进一步包括: 指针获取子模块,用于获取文件流的文件指针;及 读取子模块,用于通过文件指针偏移量的方式确定区间的起端位置,并依据文件指针从区间的起端位置起读取文件流上长度与区间长度相应的数据。
12.如权利要求11所述的装置,其特征在于,还包括:用于获取区间的起端位置的起端位置获取模块; 所述起端位置获取模块进一步包括: 预置获取子模块,用于依据预置的区间个数、区间长度和区间间隔长度,获取各区间的起端位置;所述获取过程包括:将在前区间的起始位置与在前区间的区间长度及在前区间与在后区间的区间间隔长度之和作为在后区间的起端位置。
13.如权利要求11所述的装置,其特征在于,还包括:用于获取区间的起端位置的起端位置获取模块; 所述起端位置获取模块进一步包括: 确定子模块,用于确定文件流长度和区间个数; 随机数子模块,用于产生数值在文件流长度范围内的数量与二倍于区间个数相应的随机数; 随机获取子模块,用于依据所述随机数获取各区间的起始位置。
14.如权利要求8至13中任一项所述的装置,其特征在于,所述文件流为文本流或者二进制流。
【文档编号】G06F17/30GK103577487SQ201210279847
【公开日】2014年2月12日 申请日期:2012年8月7日 优先权日:2012年8月7日
【发明者】罗峰, 黄苏支, 李娜 申请人:亿赞普(北京)科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1