一种检索方法及检索装置转让专利

申请号 : CN200910237186.1

文献号 : CN102054007B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 童征宇李晓蕊刘志云赵东岩徐剑波

申请人 : 北大方正集团有限公司北京方正阿帕比技术有限公司北京大学

摘要 :

本发明公开了一种检索方法及检索装置,该方法包括:根据预设的数据项中的数据项值对索引库中的文档进行分组,获取到用户提交的检索条件时,执行下列步骤:根据检索条件中数据项的检索属性信息,确定出用于检索的第一检索条件和用于过滤的第二检索条件;通过第一检索条件对索引库进行检索,得到初步检索结果;以及查找第二检索条件中包含的数据项上的检索词所对应的数据项值,生成基于分组的过滤器;所述基于分组的过滤器仅允许或仅不允许设定分组的文档通过;依次通过各所述过滤器对初步检索结果中的命中文档进行过滤,得到最终检索结果。上述方法将部分检索条件转化为过滤条件,以减少检索和合并的过程,节约了系统资源,提高了处理速度。

权利要求 :

1.一种检索方法,其特征在于,包括:建立预设的数据项中的每个数据项值与分组标识的对应关系、以及建立所述分组标识与索引库中包含该数据项值的各文档的文档标识之间的对应关系,获取到用户提交的检索条件时,执行下列步骤:根据所述检索条件中数据项的检索属性信息,确定出用于检索的第一检索条件和用于过滤的第二检索条件;

通过所述第一检索条件对所述索引库进行检索,得到初步检索结果;以及查找所述第二检索条件中包含的数据项上的检索词所对应的数据项值,生成与所述第二检索条件对应的过滤信息;所述过滤信息中包括:过滤的数据项、对应的过滤方式、以及过滤的数据项上过滤值的形式和取值范围;根据所述过滤信息中过滤的数据项对应的过滤方式以及所述过滤值的形式和取值范围,确定对应的有效分组标识,生成仅允许或仅不允许所述有效分组标识所对应的文档通过的所述过滤器;或根据所述过滤信息直接查找到对应的预先缓存的基于分组过滤器;其中,所述基于分组的过滤器仅允许或仅不允许设定分组的文档通过;

根据所述初步检索结果中命中文档的文档标识,确定命中文档所对应的分组标识;依次通过各所述过滤器对所述确定出的分组标识进行过滤,根据所述过滤器仅允许或仅不允许所述有效分组标识,得到能够通过各所述过滤器的文档,即为所述最终检索结果。

2.如权利要求1所述的方法,其特征在于,所述查找所述第二检索条件中包含的数据项上的检索词所对应的所述索引库中的数据项值,生成与所述第二检索条件对应的过滤信息,具体包括:根据所述第二检索条件中包含的数据项上的检索词,查询所述索引库,得到与所述检索词一致的数据项值;

直接生成所述过滤值的形式为数据项值,对应的取值范围为设定的数据项值或数据项值的范围的过滤信息;或根据与所述检索词一致的数据项值,查找所述数据项值与分组标识的对应关系确定出对应的分组标识,生成所述过滤值的形式为分组标识,对应的取值范围为设定的分组标识或分组标识的范围的过滤信息。

3.如权利要求2所述的方法,其特征在于,根据所述过滤信息,确定对应的有效分组标识生成过滤器的过程,具体包括:根据所述过滤信息中包含的设定的数据项值或数据项值的范围,查找所述数据项值与分组标识的对应关系,得到所述有效分组标识,并根据有效分组标识和所述过滤方式,生成所述过滤器;或直接获取所述过滤信息中包含的分组标识或分组标识的范围,得到所述有效分组标识,并根据有效分组标识和所述过滤方式,生成所述过滤器。

4.如权利要求1所述的方法,其特征在于,所述根据所述检索条件中数据项的检索属性信息,确定出用于检索的第一检索条件和用于过滤的第二检索条件,具体包括:根据所述索引库中预先设定的每个数据项的检索属性信息,确定包含的数据项的所述检索属性信息为采用不分词直接创建索引的方式进行检索的部分或全部检索条件为所述第二检索条件;确定剩余的检索条件为所述第一检索条件。

5.如权利要求1所述的方法,其特征在于,所述第一检索条件不唯一时,分别使用每个第一检索条件对所述索引库进行检索,并将各第一检索条件检索所得到的结果合并,得到所述初步检索结果。

6.一种检索装置,其特征在于,包括:

分组模块,用于建立数据项值与分组标识的对应关系,以及建立分组标识与包含数据项值的文档的文档标识的对应关系;

分离模块,用于获取到用户提交的检索条件,并根据所述检索条件中数据项的检索属性信息,确定出用于检索的第一检索条件和用于过滤的第二检索条件;

检索模块,用于通过所述分离模块确定出的第一检索条件对所述索引库进行检索,得到初步检索结果;

生成模块具体包括:信息处理单元和确定生成单元;

信息处理单元,用于查找所述分离模块确定出的第二检索条件中包含的数据项上的检索词所对应的所述索引库中的数据项值,生成与所述第二检索条件对应的过滤信息;所述过滤信息中包括:过滤的数据项、对应的过滤方式、以及过滤的数据项上过滤值的形式和取值范围;

确定生成单元,用于根据所述信息处理单元生成的过滤信息中过滤的数据项对应的过滤方式以及所述过滤值的形式和取值范围,确定对应的有效分组标识,生成仅允许或仅不允许所述有效分组标识所对应的文档通过的所述过滤器;或根据所述过滤信息直接查找到对应的预先缓存的基于分组过滤器;其中,所述基于分组的过滤器仅允许或仅不允许设定分组的文档通过;

过滤模块具体包括:标识确定单元和过滤单元;

标识确定单元,用于根据所述初步检索结果中命中文档的文档标识,确定命中文档所对应的分组标识;

过滤单元,用于依次通过各所述过滤器对所述确定出的分组标识进行过滤,根据所述过滤器仅允许或仅不允许所述有效分组标识,得到能够通过各所述过滤器的文档。

7.如权利要求6所述的装置,其特征在于,所述信息处理单元,具体包括:

查找子单元,用于根据所述分离模块确定出的第二检索条件中包含的数据项上的检索词,查询所述索引库,得到与所述检索词一致的数据项值;

处理子单元,用于直接生成所述过滤值的形式为数据项值,对应的取值范围为设定的数据项值或数据项值的范围的过滤信息;或根据与所述检索词一致的数据项值,查找所述数据项值与分组标识的对应关系确定出对应的分组标识,生成所述过滤值的形式为分组标识,对应的取值范围为设定的分组标识或分组标识的范围的过滤信息。

8.如权利要求7所述的装置,其特征在于,所述确定生成单元,具体包括:

确定子单元,用于根据所述信息处理单元生成的过滤信息中包含的设定的数据项值或数据项值的范围,查找所述数据项值与分组标识的对应关系,得到所述有效分组标识;或直接获取所述过滤信息中包含的分组标识或分组标识的范围,得到所述有效分组标识;

生成子单元,用于根据有效分组标识和所述过滤方式,生成所述过滤器。

9.如权利要求6所述的装置,其特征在于,所述分离模块,具体用于:根据所述索引库中预先设定的每个数据项的检索属性信息,确定包含的数据项的所述检索属性信息为采用不分词直接创建索引的方式进行检索的部分或全部检索条件为所述第二检索条件;确定剩余的检索条件为所述第一检索条件。

10.如权利要求6所述的装置,其特征在于,所述检索模块,具体用于:当所述第一检索条件不唯一时,分别使用每个第一检索条件对所述索引库进行检索,并将各第一检索条件检索所得到的结果合并,得到所述初步检索结果。

说明书 :

一种检索方法及检索装置

技术领域

[0001] 本发明涉及信息处理领域,尤指一种基于全文检索技术,采用分组过滤方式加快检索速度的检索方法及检索装置。

背景技术

[0002] 现有技术中,全文检索系统支持用户同时指定多个检索条件进行检索,每个检索条件作为一个分支分别检索得到一组检索结果,最后对各个分支得到的各组检索结果进行合并,才能得到满足全部检索条件(即多个检索条件)的最终检索结果。因此,检索过程中的系统资源消耗包括每个检索分支的检索以及对每个分支的检索结果进行合并得到最终结果两个过程的系统资源消耗。
[0003] 目前,对于同一个数据项的多个不同值的检索,一般会被拆分成多个检索条件;同时,复杂的检索条件(如指定检索词范围的检索、指定检索词前缀的检索等)在检索时会扩展成一组普通的检索条件;这使得一次检索中的检索条件的数量可能会达到上百甚至上千项,随着拆分出的检索条件数量的增多,系统资源的消耗也随着检索条件的增加不断增大,从而更加加剧了全文检索存在的性能问题。
[0004] 为了解决多个条件检索时所存在的系统性能问题,可以考虑改进分支的检索性能、改进复杂检索类型的检索过程等等。但是这种改进所带来的系统性能的提高非常有限。
[0005] 申请号为200610083172.5专利申请,公开了一种数据集成服务系统及方法,包括:将用户输入的查询条件转化为数值范围,并与预先保存的数据源提供的数据范围,查找并向对应的数据源提供查询请求以获取查询结果。该方法将部分检索请求直接固化为过滤函数,检索结果通过过滤函数逐条计算进行验证。这个方法中过滤的计算量大,处理的数据多。另外这个方法无法灵活地支持用户在检索过程中动态处理检索请求。
[0006] 且现有技术中存在的基于过滤条件的检索处理方法均是基于全部文档的,将过滤条件与索引库中的全部文档相结合,这种基于全部文档的过滤器存在创建速度慢,数据量大,占用大量内存资源等缺点。且在实际应用中往往需要根据文档的某种特征进行过滤,当特征的取值较多时,往往会导致检索条件过长引起性能和传输的问题,且基于文档的过滤器很难满足这种过滤要求。因此,基于全部文档的过滤器在多用户多并发的全文检索系统中应用时仍然存在严重的性能问题。

发明内容

[0007] 本发明实施例提供一种检索方法及检索装置,用以解决现有技术中多条件检索时存在的系统资源开销大、处理速度慢等系统性能问题。
[0008] 一种检索方法,包括:根据预设的数据项中的数据项值对索引库中的文档进行分组,获取到用户提交的检索条件时,执行下列步骤:
[0009] 根据所述检索条件中数据项的检索属性信息,确定出用于检索的第一检索条件和用于过滤的第二检索条件;
[0010] 通过所述第一检索条件对所述索引库进行检索,得到初步检索结果;以及查找所述第二检索条件中包含的数据项上的检索词所对应的数据项值,生成基于分组的过滤器;所述基于分组的过滤器仅允许或仅不允许设定分组的文档通过;
[0011] 依次通过各所述过滤器对所述初步检索结果中的命中文档进行过滤,得到最终检索结果。
[0012] 一种检索装置,包括:
[0013] 分组模块,用于根据预设的数据项中的数据项值对索引库中的文档进行分组;
[0014] 分离模块,用于获取到用户提交的检索条件,并根据所述检索条件中数据项的检索属性信息,确定出用于检索的第一检索条件和用于过滤的第二检索条件;
[0015] 检索模块,用于通过所述分离模块确定出的第一检索条件对所述索引库进行检索,得到初步检索结果;
[0016] 生成模块,用于查找所述分离模块确定出的第二检索条件中包含的数据项上的检索词所对应的数据项值,生成基于分组的过滤器;所述基于分组的过滤器仅允许或仅不允许设定分组的文档通过;
[0017] 过滤模块,用于依次通过各所述生成模块生成的基于分组的过滤器对所述初步检索结果中的命中文档进行过滤,得到最终检索结果。
[0018] 本发明实施例提供的检索方法及检索装置,根据预设的数据项中的数据项值对索引库中的文档进行分组;当需要进行检索时,可以根据获取到用户提交的检索条件中数据项的检索属性信息,确定出用于检索的第一检索条件和用于过滤的第二检索条件;然后将第二检索条件所对应的检索过程为过滤过程,即通过第一检索条件对索引库进行检索,得到初步检索结果;以及查找第二检索条件中包含的数据项上的检索词所对应的数据项值,生成仅允许或仅不允许设定分组的文档通过的基于分组的过滤器;依次通过各所述过滤器对初步检索结果中的命中文档进行过滤,得到最终检索结果。上述方法通过将部分检索条件转化为过滤条件,以减少检索过程和检索后合并的复杂程度,从而节约了系统资源,提高了处理速度。

附图说明

[0019] 图1为本发明实施例中分组标识与文档标识的对应关系示意图;
[0020] 图2为本发明实施例中数据项值与文档之间的归属关系示意图;
[0021] 图3为本发明实施例中检索方法的流程图;
[0022] 图4为本发明实施例中检索方法的原理示意图;
[0023] 图5为本发明实施例中检索装置的结构示意图。

具体实施方式

[0024] 全文检索系统中,用户提交的检索条件是由数据项(Field)和该数据项上的检索词组成的。根据数据项本身的检索属性信息,即数据项本身的分词特性,全文检索可以包括两种检索方式:
[0025] 一种是在分词后创建索引的数据项上进行的检索。
[0026] 该检索方式要求命中文档在创建索引的数据项上的数据项值包含检索词,命中文档与检索条件之间是可以用相关度来表示的,其相关度为[0,1]之间的浮点数。
[0027] 二是在不分词直接创建索引的数据项上进行的检索。
[0028] 该检索方式要求命中文档中文档在创建索引的数据项上的数据项值与检索词完全一致,或命中文档中文档在创建索引的数据项上的数据项值在检索条件所指定的范围内。其相关度只能为0或1,没有中间值。因此,这类检索将索引库中的档划分为两个不相交的集合:满足检索条件的文档集合和不满足检索条件的文档集合。过滤器则等效于这类检索,经过滤器过滤后得到满足或不满足检索条件的结果。因此对于检索属性信息为不分词创建索引的数据项,包含该数据项的检索条件可以转化生成基于该数据项的过滤器,即下文所说基于分组的过滤器。
[0029] 本发明实施例提供的检索方法,采用检索和过滤相结合的方式,实现对索引库的检索。
[0030] 首先,根据预设的数据项(Field)对索引库中的文档进行分组。并建立预设的数据项中的每个数据项值、包含该数据项值的文档的文档标识的对应关系,具体为:数据项值与分组标识的对应关系、以及分组标识与索引库中包含该数据项值的各文档的文档标识之间的对应关系。
[0031] 获取索引库中预设的数据项,为每个数据项值分配一个分组标识(GroupID),并存储各数据项值与分组标识的对应关系。也可以预先指定数据项值与分组标识的对应关系。例如:数据项可以包括:报纸名、出版日期等若干数据项;每个数据相中可以包含多个不同的数据项值,例如数据项“报纸名”中包含人民日报、法制日报等数据项值。
[0032] 根据数据项值将索引库中的所有文档划分到各个分组中。即将包含相同数据项值的所有文档归入一个分组中。从而通过建立分组标识和文档标识的对应关系,实现将文档划归到不同的分组中。每篇文档根据其所包含的数据项值可以归属到至少一个分组中。例如,将包含数据项值“人民日报”的文档划分到一个分组中,对应的分组标识为GroupID 1;将包含数据项值“法制日报”的文档划分到一个分组中,对应的分组标识为GroupID 2等。
例如图1所示,为文档标识与分组标识的对应关系示意图。其中,每个GroupID对应若干文档标识(DocID)。
[0033] 通过上述依次建立的数据项值与分组标识的对应关系以及分组标识和文档标识的对应关系,即可确立各数据项值与索引库中的各文档的文档标识的对应关系。将上述建立的数据项值与分组标识的对应关系以及分组标识和文档标识的对应关系保存到分组文件中。也就是说,该分组文件可以提供根据数据项值查找分组标识的能力,同时提供根据文档标识快速查找分组标识的能力等。例如图2所示,为数据项值与文档之间的归属关系示意图。其中,每个数据项值(Field值)的分组中包含若干文档(Doc)。
[0034] 当获取到用户提交的检索条件后,在索引库中进行检索的流程如图3所示,其实现原理如图4所示,执行步骤如下:
[0035] 步骤S1:从用户提交的检索条件中分离出用于检索的第一检索条件和用于过滤的第二检索条件。
[0036] 具体根据用户提交的检索条件中数据项的检索属性信息,确定出用于检索的第一检索条件和用于过滤的第二检索条件。其中,根据索引库中预先设定的每个数据项的检索属性信息,确定出的包含的数据项的检索属性信息为采用不分词直接创建索引的方式进行检索的部分或全部检索条件,作为第二检索条件;并确定检索条件中除第二检索条件外的剩余的检索条件为第一检索条件。
[0037] 由于用户提交检索关键词后,转化成的检索条件由数据项和该数据项上的检索词组成。而在索引库中,预先设定了每个数据项的检索属性信息,即采用分词后创建索引的方式进行检索还是采用不分词直接创建索引的方式进行检索,因此,可以根据索引库中预先设定的每个数据项的检索属性信息,查找到检索条件中数据项的检索属性信息,将检索条件进行区分,实现确定出上述第一检索条件和第二检索条件。
[0038] 用户提交检索关键词可能有多个,因此转化出的检索条件也可能有多个,上述即是对有多个检索条件的情况进行的区分,从而为后续实现检索与过滤相结合的全文检索做好准备。区分后确定出的第一检索条件和第二检索条件均可能不止一个。区分出第一检索条件和第二检索条件后,即可实现将第二检索条件所对应的检索过程转化为过滤过程,即使用下面生成的基于分组的过滤器替代部分检索条件,以简化检索过程。
[0039] 步骤S2:通过确定出的第一检索条件对索引库进行检索,得到初步检索结果。
[0040] 根据上述确定出的第一检索条件,对索引库进行检索,得到初步检索结果。
[0041] 当第一检索条件唯一时,直接检索得到检索结果;当第一检索条件不唯一时,即有多个第一检索条件时,使用每个第一检索条件分别进行检索后,并将各第一检索条件检索所得到的结果合并,得到初步检索结果。即分别使用每个检索条件进行检索得到各自所命中的文档后,确定其中包含的多个第一检索条件均命中的文档,即为合并后的初步检索结果中包含的文档。
[0042] 步骤S3:查找第二检索条件中包含的数据项上的检索词所对应的数据项值,生成基于分组的过滤器。其中,基于分组的过滤器仅允许或仅不允许设定分组的文档通过。具体包括:
[0043] 首先,查找第二检索条件中包含的数据项上的检索词所对应的索引库中的数据项值,生成与第二检索条件对应的过滤信息。其中,过滤信息包括:过滤的数据项、对应的过滤方式、以及过滤的数据项上过滤值的形式和取值范围。
[0044] 上述过滤的数据项上过滤值的形式,可以包括:数据项值、数据项值所对应的分组标识等形式中的一种或几种。
[0045] 然后,根据过滤信息直接查找到对应的预先缓存的基于分组过滤器;或根据过滤信息中过滤的数据项对应的过滤方式以及过滤值的形式和取值范围,确定对应的有效分组标识,生成仅允许或仅不允许有效分组标识所对应的文档通过的过滤器。即通过仅允许或仅不允许有效分组标识所对应的文档通过,实现仅允许或仅不允许设定分组的文档通过。
[0046] 步骤S4:依次通过上述生成的各基于分组的过滤器对初步检索结果中的命中文档进行过滤,得到最终检索结果。
[0047] 首先,根据初步检索结果中命中文档的文档标识,确定命中文档所对应的分组标识。
[0048] 根据上述得到的初步检索结果中各文档的文档标识,查询存储的分组文件中的分组标识和文档标识的对应关系,确定各文档所对应的分组标识。其中,当文档所属的分组不唯一时,文档所对应的分组标识也可以有多个。
[0049] 然后,依次通过各过滤器对确定出的分组标识进行过滤,根据过滤器仅允许或仅不允许有效分组标识,得到能够通过各过滤器的文档,即为最终检索结果。
[0050] 将上述得到的初步检索结果中的文档依次输入生成的基于分组的过滤器中进行过滤,当文档所对应的分组标识中至少一个为所经过的过滤器中定义的允许通过的有效分组标识时,确定该文档能够通过该过滤器,否则不能通过;或当文档所对应的分组标识全部为所经过的过滤器中定义的不允许通过的有效分组标识时,确定该文档不能够通过该过滤器,否则能够通过。即基于分组的过滤器是根据文档的分组标识进行过滤查找,并返回存在或不存在的查找结果的。
[0051] 当有多个过滤器时,则将上一个过滤器的过滤结果在输入下一个过滤器中过滤。经所有过滤器过滤后,才能得到最终的检索结果。即初步检索结果经多个过滤器一次过滤,任何一个过滤失败则会返回过滤失败的过滤结果,多个过滤器均过滤成功的则为最终的检索结果。
[0052] 上述步骤S3中,查找第二检索条件中包含的数据项上的检索词所对应的数据项值,生成基于分组的过滤器的过程,具体可以包括下列两种情况:
[0053] 情况一:生成的检索信息中包含的过滤值的形式为数据项值。
[0054] 该情况下,查找第二检索条件中包含的数据项上的检索词所对应的索引库中的数据项值,生成与第二检索条件对应的过滤信息的过程,具体包括:
[0055] 由于第二检索条件中包含的数据项上的检索词即对应着索引库中该数据项上的数据项值,即两者具有一致性。所以可以根据第二检索条件中包含的数据项上的检索词,查询索引库中的数据项值,得到与检索词一致的数据项值。
[0056] 较佳的,对于属于相同数据项的多个数据项值或数据项值的取值范围,可以预先进行合并,以减少生成的过滤器的数量,从而进一步节约系统资源。
[0057] 查找到与检索词一致的数据项值之后,即可以直接生成过滤值的形式为数据项值,对应的取值范围为设定的数据项值或数据项值的范围的过滤信息。
[0058] 一般生成过滤信息是在前台进行的,而生成的过滤信息发送到后台后,可以根据过滤信息查找是否有缓存的过滤器,当查找到时,可以直接调用;或者根据过滤信息确定对应的有效分组标识,生成基于分组的过滤器。
[0059] 该情况下,根据过滤信息确定对应的有效分组标识生成过滤器的过程,具体包括:
[0060] 根据过滤信息中包含的设定的数据项值或数据项值的范围,查找数据项值与分组标识的对应关系,得到有效分组标识。即查找预先存储的分组文件中的数据项值与分组标识的对应关系,得到设定的数据项值或设定的数据项值的范围中包含的数据项值所对应的分组标识。
[0061] 根据确定出的有效分组标识和有效分组标识所对应的数据项的过滤方式,生成基于分组过滤器。
[0062] 其中,过滤方式包括包含数据项值的过滤和不包含数据项值的过滤等方式。相应于两种过滤方式生成的过滤器,也分为仅允许设设定的数据项值所对应的分组标识(即有效分组标识)通过的过滤器和仅不允许设设定的数据项值所对应的分组标识通过的过滤器。且对采用上述其中一种过滤方式的过滤器进行反转即可得到采用上述另一种方式的过滤器。
[0063] 情况二:生成的检索信息中包含的过滤值的形式为分组标识。
[0064] 该情况下,查找第二检索条件中包含的数据项上的检索词所对应的索引库中的数据项值,生成与第二检索条件对应的过滤信息的过程,具体包括:
[0065] 根据第二检索条件中包含的数据项上的检索词,查询索引库中的数据项值,得到与检索词一致的数据项值。
[0066] 较佳的,对于属于相同数据项的多个数据项值或数据项值的取值范围,可以预先先进行合并。
[0067] 根据查找到的与检索词一致的数据项值,查找数据项值与分组标识的对应关系确定出对应的分组标识,生成过滤值的形式为分组标识,对应的取值范围为设定的分组标识或分组标识的范围的过滤信息。即查找预先存储的分组文件中的数据项值与分组标识的对应关系,得到设定的数据项值或设定的数据项值的范围中包含的数据项值所对应的分组标识。
[0068] 同样的,后台可以根据过滤信息查找是否有缓存的过滤器,当查找到时,可以直接调用;或者根据过滤信息确定对应的有效分组标识,生成基于分组的过滤器。
[0069] 该情况下,根据过滤信息确定对应的有效分组标识生成过滤器的过程,具体包括:
[0070] 直接获取过滤信息中包含的分组标识或分组标识的范围,得到有效分组标识。
[0071] 然后根据有效分组标识和该分组标识所对应的数据项的过滤方式,生成基于分组的过滤器。
[0072] 较佳的,可以将情况一和情况二时生成的过滤器进行存储或缓存,再次使用时则可以直接调用,避免重复创建。对于加入缓存的过滤器可以通过最近最久未使用算法(Least Recently Used,LRU)的缓存策略进行缓存的更新替换。
[0073] 一般过滤信息的生成可以在检索系统的前端进行处理,而根据过滤信息生成过滤器则一般会在检索系统的后台进行处理。也就是说情况一中,前端只作简单的处理即将信息发往后台,而情况二中,前端的处理比较多,相对而言减小了后台的处理压力。
[0074] 生成的过滤信息,可以仅仅包含上述情况一或二中任意一种形式的过滤信息,也可以包含上述几种形式的过滤信息的组合。例如:
[0075] 用户检索时,指定了报纸名(papername)、出版日期(date)、文章标题、作者、出版地域等涉及多个数据项的多个检索关键词,生成了多个检索条件。其中出版日期和报纸名所对应的数据项的检索属性信息为在不分词直接创建索引的数据项上进行的检索,则这两个检索条件可以作为第二检索条件,将该检索条件对应的检索转化为过滤器。
[0076] 则根据报纸名和出版日期这两个数据项中包含的检索词,查找到索引库中对应的数据项值,生成的xml形式的过滤信息的一个示例如下:其中,包含数据项(Field)、过滤值的形式和取值范围(数据项值及取值范围、分组标识及取值范围等),以及过滤方式等信息。
[0077]
[0078]
[0079] ″>2-5,9-20
[0080] 20080808
[0081] 20090808
[0082]
[0083] 上述数据项包括报纸名(papername)和出版日期(date);过滤值的形式包括数据项值(value)、其取值范围为20090808,分组标识(index)、其取值范围为2-5,9-20;过滤方式包括包含(include)和不包含(exclude)过滤值等。则根据该过滤信息生成的过滤器即为基于报纸名和出版日期两个分组的过滤器,当然也可以分别生成基于报纸名和出版日期的两个过滤器依次进行过滤。
[0084] 较佳的,用户输入检索关键词时,如果是采用直接输入的方式,则可以有上述二种情况所给出的处理过程。若用户输入检索关键词时采用的是选择方式,即系统直接提供了若干检索关键词选项供用户选择,用户只需选中要输入的检索关键词即可实现输入,则此时对于提供给用户选择的各检索关键词中属于预设的数据项值的,可以直接将其对应的分组标识与该检索词绑定。则一旦用户选择了该检索词(数据项值),可以直接获取到其对应的分组标识,而不必再进行查找数据项值和分组标识的对应关系。
[0085] 根据本发明的上述检索方法,可以构建一种检索装置,如图4所示,包括:分组模块10、分离模块20、检索模块30、生成模块40和过滤模块50。
[0086] 分组模块10,用于根据预设的数据项中的数据项值对索引库中的文档进行分组。
[0087] 分组模块10,具体用于:建立数据项值与分组标识的对应关系,以及建立分组标识与包含数据项值的文档的文档标识的对应关系,实现对索引库中文档的分组。
[0088] 分离模块20,用于获取到用户提交的检索条件,并根据检索条件中数据项的检索属性信息,确定出用于检索的第一检索条件和用于过滤的第二检索条件。
[0089] 分离模块20,具体用于:根据索引库中预先设定的每个数据项的检索属性信息,确定包含的数据项的所述检索属性信息为采用不分词直接创建索引的方式进行检索的部分或全部检索条件为第二检索条件;确定剩余的检索条件为第一检索条件。
[0090] 检索模块30,用于通过分离模块20确定出的第一检索条件对索引库进行检索,得到初步检索结果。
[0091] 检索模块30,具体用于:当第一检索条件不唯一时,分别使用每个第一检索条件对索引库进行检索,并将各第一检索条件检索所得到的结果合并,得到初步检索结果。
[0092] 生成模块40,用于查找分离模块20确定出的第二检索条件中包含的数据项上的检索词所对应的数据项值,生成基于分组的过滤器;其中,基于分组的过滤器仅允许或仅不允许设定分组的文档通过。
[0093] 较佳的,上述生成模块40,具体包括:信息处理单元401和确定生成单元402。
[0094] 信息处理单元401,用于查找分离模块20确定出的第二检索条件中包含的数据项上的检索词所对应的索引库中的数据项值,生成与第二检索条件对应的过滤信息;其中,过滤信息中包括:过滤的数据项、对应的过滤方式、以及过滤的数据项上过滤值的形式和取值范围。
[0095] 较佳的,信息处理单元401,进一步可以包括:查找子单元4011和处理子单元4012。
[0096] 查找子单元4011,用于根据分离模块20确定出的第二检索条件中包含的数据项上的检索词,查询索引库,得到与检索词一致的数据项值。
[0097] 处理子单元4012,用于直接生成过滤值的形式为数据项值,对应的取值范围为设定的数据项值或数据项值的范围的过滤信息;或根据与检索词一致的数据项值,查找数据项值与分组标识的对应关系确定出对应的分组标识,生成过滤值的形式为分组标识,对应的取值范围为设定的分组标识或分组标识的范围的过滤信息。
[0098] 确定生成单元402,用于根据信息处理单元401生成的过滤信息中过滤的数据项对应的过滤方式以及过滤值的形式和取值范围取值范围,确定对应的有效分组标识,生成仅允许或仅不允许有效分组标识所对应的文档通过的基于分组的过滤器;或根据信息处理单元401生成的过滤信息直接查找到对应的预先缓存的基于分组过滤器。
[0099] 较佳的,确定生成单元402,进一步可以包括:确定子单元4021和生成子单元4022。
[0100] 确定子单元4021,用于根据信息处理单元401生成的过滤信息中包含的设定的数据项值或数据项值的范围,查找数据项值与分组标识的对应关系,得到有效分组标识;或直接获取过滤信息中包含的分组标识或分组标识的范围,得到有效分组标识。
[0101] 生成子单元4022,用于根据有效分组标识和该数据项对应的过滤方式,生成基于分组的过滤器。
[0102] 过滤模块50,用于依次通过各生成模块40生成的基于分组的过滤器对检索模块30得到的初步检索结果中的命中文档进行过滤,得到最终检索结果。
[0103] 较佳的,上述过滤模块50,具体包括:标识确定单元501和过滤单元502。
[0104] 标识确定单元501,用于根据检索模块30得到的初步检索结果中命中文档的文档标识,确定命中文档所对应的分组标识。
[0105] 过滤单元502,用于依次通过各生成模块40生成的基于分组的过滤器对标识确定单元501确定出的分组标识进行过滤,根据基于分组的过滤器仅允许或仅不允许有效分组标识,得到能够通过各所述过滤器的文档,即为最终检索结果。
[0106] 例如:图5所示为本申请的检索方法与现有技术的检索方法的原理对比示意图。
[0107] 从图5中可以看出,针对有四个检索条件的布尔检索,原来的做法是使用四个检索条件(检索条件1、2、3、4)分别进行检索,得到每个检索条件的命中文档(例如:图中每个检索条件下方给出的文档),然后将各个检索条件命中的文档合并,从而得到最终结果。而本申请中则是将其中的检索条件3和4转化为了过滤器,使用检索条件1和2进行检索后,将检索结果合并后得到初步检索结果,然后通过过滤器1和2依次进行过滤,得到最终结果。通过过滤器的使用来减少结果合并的复杂程度,提高检索速度。
[0108] 本发明实施例提供的上述检索方法及装置,通过根据预设的数据项中的数据项值对索引库中的文档进行分组;以便在检索时,能够生成基于分组的过滤器。基于分组的过滤器只允许或仅不允许设定分组的文档通过,相对于基于文档的过滤器其创建效率高、处理的数据量小、过滤性能高。
[0109] 当需要进行全文检索时,可以根据获取到用户提交的检索条件中数据项的检索属性信息,确定出第一检索条件和第二检索条件,实现将第二检索条件所对应的检索过程为过滤过程。通过基于分组的过滤器对初步检索进行过滤,通过分组标识方便快捷的实现过滤,得到最终检索结果。通过减少用于检索的检索条件来减少检索过程以及检索结果合并的复杂程度,提高处理速度,从而节约了系统资源,提高了处理速度。从而克服了全文检索系统中基于文档的过滤器的性能缺陷,提高了检索系统的整体性能。
[0110] 另外还可以预生成复杂的过滤器以及缓存生成的常用的过滤器,减少过滤器的生成和创建过程,且检索过程和过滤器的生成过程可以并发处理,对于相同数据项的检索词也可以合并处理生成一个过滤器,从而进一步优化了系统性能,达到减少检索条件数量,更好的提高检索性能的目的。
[0111] 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化、替换或应用到其他类似的装置,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。