一种分布式创建索引的方法和装置的制造方法_2

文档序号:8258657阅读:来源:国知局
1个索引合并子任务,标记 索引数据属于第2分组的索引数据分配给第2个索引合并子任务,…,标记索引数据属于 第M分组的索引数据分配给第M个索引合并子任务。
[0046] 第二种方式:第一部分任务中并发的索引创建子任务与第二部分中并发的索引合 并子任务存在对应关系,例如M*N个索引创建子任务中,每N个索引创建子任务对应一个索 引合并子任务,该索引合并子任务负责处理其对应索引创建子任务所创建的索引数据。
[0047] 另外,每个索引合并子任务在处理N个索引数据时,可以采用单线程的方式,也可 以采用多线程的方式。即每个索引合并子任务启动X个线程进行索引数据的合并,X为正 整数。每个线程进行3个索引数据的合并。同样,如果X值设置的较小,则第二部分任务的X 执行时间较长,如果X值设置的较大,则占用较多的系统资源,因此X值可以根据N值的大 小进行设置,可以采用经验值,例如设置为3。
[0048] 每一个索引合并子任务在进行索引数据的合并时,由于全文索引的索引数据包括 两个方面的信息:正向信息和反向信息,因此,索引数据的合并就包括正向信息的合并和反 向信息的合并。
[0049] 为了帮助理解,简单描述一下索引数据的结构,通常索引数据是有层次结构的,主 要分为以下几个层次:
[0050]索引(Index):
[0051] 在Lucene(是一套用于全文检索和搜寻的开源程式库)中一个索引是放在一个文 件夹中的。
[0052]段(Segment):
[0053] -个索引可以包含多个段,段与段之间是独立的,添加新文档可以生成新的段,不 同的段可以合并。
[0054] 其中段的元数据信息保存了段的属性信息。
[0055]文档(Document):
[0056] 文档是建索引的基本单位,不同的文档是保存在不同的段中的,一个段可以包含 多篇文档。新添加的文档是单独保存在一个新生成的段中,随着段的合并,不同的文档合并 到同一个段中。
[0057]域(Field):
[0058] -篇文档包含不同类型的信息,可以分开索弓丨,比如标题、时间、正文、作者等等, 都可以保存在不同的域里,不同域的索引方式可以不同。
[0059] 词(Term):
[0060] 词是索引的最小单位,是经过词法分析和语言处理后的字符串。
[0061] 在了解了上述层次结构后,说明下正向信息。所谓正向信息是按层次保存了从索 引一直到词的包含关系:索引-> 段-> 文档-> 域-> 词。也即此索引包含了哪些段,每个段 包含了哪些文档,每个文档包含了哪些域,每个域包含了哪些词。既然是层次结构,则每个 层次都保存了本层次的信息以及下一层次的元数据信息,也即属性信息。也就是说,正向信 息主要包括:上述的元数据信息和数据信息。数据信息主要是指域的数据信息。
[0062] 正向信息在进行合并时,对于元数据信息相同的索引数据,则可以采用批量合并 的方式,在批量合并时可以将批量的索引数据进行数据信息的合并,由于元数据信息相同, 因此无需处理。对于对应元数据信息不相同的索引数据,则只能采用逐一合并的方式,在逐 一合并时,需要分别做索引数据的元数据信息的合并和数据信息的合并。
[0063] 在本发明中,各索引创建子任务在创建索引数据时,可以将索引数据的元数据信 息进行归一化处理,从而使元数据信息仅存在细微差别的索引数据的元数据信息相同,例 如,有的索引数据的元数据信息仅存在顺序上的差别,则通过调整元数据信息中的顺序实 现归一化,比如将A、B和C构成的元数据信息以及A、C和B构成的元数据信息归一化为A、 B和C构成的元数据信息;再例如,有的索引数据的元数据信息包含A、B和C,而有的索引数 据的元数据信息包含A、B和D,则通过使元数据信息包含A、B、C和D的方式,只是前一个索 引数据的元数据信息中D域的信息为空,后一个索引数据的元数据信息中C域的信息为空, 通过这种方式实现归一化;等等。然后索引合并子单元就可以采用批量合并的方式进行索 引数据的合并,从而达到效率的更优化。
[0064] 对于反向信息而言,主要是保存了词典到倒排表的映射:
[0065]词(term) _> 文档(document)
[0066] 反向信息的合并无批量合并方式,原因在于反向信息的基本单元是词。比如文档1 的域x值为"IamChinese",文档2的域x值为"IamEnglish"。进行分词后,文档1与 词之间的映射关系如表1中所示,文档2与词之间的映射关系如表2中所示。
[0067] 表 1
【主权项】
1. 一种分布式创建索引的方法,其特征在于,该方法包括: 索引创建子任务并发地读取待创建索引的数据并针对读取的待创建索引的数据创建 索引数据,所述索引创建子任务的并发数大于查询计算集群分片数M ; 索引合并子任务并发地将所述索引数据进行合并,得到M组索引数据,所述索引合并 子任务的并发数为M。
2. 根据权利要求1所述的方法,其特征在于,所述索引创建子任务的并发数为M*N,所 述N为大于1的正整数。
3. 根据权利要求1或2所述的方法,其特征在于,该方法还包括;将待创建索引的数据 的主键进行哈希后,根据哈希值将所述待创建索引的数据分配给对应的索引创建子任务进 行读取。
4. 根据权利要求1或2所述的方法,其特征在于,所述索引创建子任务被分成M组,所 述索引创建子任务在针对待创建索引的数据创建索引数据时,进一步对索引数据打上标识 该索引数据所属分组的标记; 每个索引合并子任务对应索引数据中的一种标记,将索引数据分配给与该索引数据的 标记对应的索引合并子任务进行所述合并的处理。
5. 根据权利要求1或2所述的方法,其特征在于,所述索引创建子任务与所述索引合并 子任务存在对应关系,所述索引合并子任务负责合并其对应索引创建子任务所创建的索引 数据。
6. 根据权利要求1所述的方法,其特征在于,每个所述索引合并子任务启动X个线程进 行索引数据的合并,所述X为正整数。
7. 根据权利要求1或6所述的方法,其特征在于,所述索引创建子任务在创建索引数据 时,对所述索引数据的元数据信息进行归一化处理; 将所述索引数据进行合并具体包括;对于归一化处理后元数据信息相同的索引数据的 正向信息进行批量合并,所述批量合并为批量地将索引数据的正向信息中的数据信息进行 合并。
8. 根据权利要求1或6所述的方法,其特征在于,将所述索引数据进行合并具体包括: 获得所述索引数据域中的所有词,对于不同的词在合并反向信息时均保留,对于相同 的词在合并反向信息时更新该词所在的文档W及出现的频率。
9. 一种分布式创建索引的装置,其特征在于,该装置包括:索引创建单元和索引合并 单元; 所述索引创建单元中包含的索引创建子单元的并发数大于查询计算集群分片数M,所 述索引创建子单元,用于并发地读取待创建索引的数据并针对读取的待创建索引的数据创 建索引数据; 所述索引合并单元中包含的索引合并子单元的并发数为M,所述索引合并子单元,用于 并发地将所述索引数据进行合并,使得所述索引合并单元得到M组索引数据。
10. 根据权利要求9所述的装置,其特征在于,所述索引创建子单元的并发数为M*N,所 述N为大于1的正整数。
11. 根据权利要求9或10所述的装置,其特征在于,所述索引创建单元还包括;第一分 配子单元,用于将待创建索引的数据的主键进行哈希后,根据哈希值将待创建索引的数据 分配给对应的索引创建子任务进行读取。
12. 根据权利要求9或10所述的装置,其特征在于,所述索引创建子单元被分成M组, 所述索引创建子单元在针对待创建索引的数据创建索引数据时,还用于对索引数据打上标 识该索引数据所属分组的标记; 每个索引合并子单元对应索引数据中的一种标记,所述索引合并单元还包括;第二分 配子单元,用于将所述索引创建单元创建的索引数据分配给与索引数据的标记对应的索引 合并子单元进行所述合并的处理。
13. 根据权利要求9或10所述的装置,其特征在于,所述索引创建子单元与所述索引合 并子单元存在对应关系,所述索引合并子单元负责合并其对应索引创建子单元所创建的索 引数据。
14. 根据权利要求9所述的装置,其特征在于,每个索引合并子单元启动X个线程进行 索引数据的合并,所述X为正整数。
15. 根据权利要求9或14所述的装置,其特征在于,所述索引创建子单元,还用于在创 建索引数据时,对所述索引数据的元数据信息进行归一化处理; 所述索引合并子单元,具体用于:对于归一化处理后元数据信息相同的索引数据的正 向信息进行批量合并,所述批量合并为批量地将索引数据的正向信息中的数据信息进行合 并。
16. 根据权利要求9或14所述的装置,其特征在于,所述索引合并子单元,具体用于: 获得所述索引数据域中的所有词,对于不同的词在合并反向信息时均保留,对于相同的词 在合并反向信息时更新该词所在的文档W及出现的频率。
【专利摘要】本发明提供了一种分布式创建索引的方法和装置,其中方法包括:索引创建子任务并发地读取待创建索引的数据并针对读取的待创建索引的数据创建索引数据,所述索引创建子任务的并发数大于查询计算集群分片数M;索引合并子任务并发地将所述索引数据进行合并,得到M组索引数据,所述索引合并子任务的并发数为M。通过本发明能够提高分布式创建索引的效率。
【IPC分类】G06F17-30
【公开号】CN104572785
【申请号】CN201310521584
【发明人】王永伟
【申请人】阿里巴巴集团控股有限公司
【公开日】2015年4月29日
【申请日】2013年10月29日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1