一种创建索引文件的方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,特别是涉及一种创建索引文件的方法及装置。
【背景技术】
[0002]全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。
[0003]检索主要分为按字检索和按词检索两种。按字检索是指对于文章中的每一个字都建立索引,检索时将词分解为字的组合。对于各种不同的语言而言,字有不同的含义,比如英文中字与词实际上是合一的,而中文中字与词有很大分别。按词检索指对文章中的词,即语义单位建立索引,检索时按词检索,并且可以处理同义项等。英文等西方文字由于按照空白切分词,因此实现中与按字处理类似,添加同义处理也很容易。中文等东方文字则需要切分字词,以达到按词索引的目的,关于这方面的问题,是当前全文检索技术尤其是中文全文检索技术中的难点。
[0004]全文检索系统是按照全文检索理论建立起来的用于提供全文检索服务的软件系统。一般来说,全文检索需要具备建立索引和提供查询的基本功能,此外现代的全文检索系统还需要具有方便的用户接口、二次应用开发接口等等。功能上,全文检索系统核心具有建立索引、处理查询返回结果集、增加索引、优化索引结构等功能。
[0005]Lucene是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。
[0006]Lucene特殊的索引结构,决定了其只能使用一个IndexWriter对索引进行添加操作。这样对于大数据量的索引,如果无法实现并行创建索引,索引的过程将十分耗时。
【发明内容】
[0007]本发明的目的是提供一种创建索引文件的方法及装置,目的在于解决当索引数据规模较大时,现有的索引方法索引效率较低的问题。
[0008]为解决上述技术问题,本发明提供一种创建索引文件的方法,包括:
[0009]根据数据规模以及业务需求,确定执行索引创建的线程数量;
[0010]通过所述数据规模以及所述线程数量,确定各个线程分别负责进行索引的数据范围;
[0011]各个线程分别创建对应数据范围的索引文件;
[0012]将各个所述线程创建的所述索引文件进行合并,存储于一个索引目录中。
[0013]可选地,所述将各个所述线程创建的所述索引文件进行合并,存储于一个索引目录中包括:
[0014]当各个线程的索引文件创建执行完成后,将各个所述线程创建的所述索引文件进行合并,存储于一个索引目录中。
[0015]可选地,所述各个线程分别创建对应数据范围的索引文件包括:
[0016]各个线程分别创建的索引文件互相独立,不会引发锁重叠异常。
[0017]本发明还提供了一种创建索引文件的装置,包括:
[0018]第一确定模块,用于根据数据规模以及业务需求,确定执行索引创建的线程数量;
[0019]第二确定模块,用于通过所述数据规模以及所述线程数量,确定各个线程分别负责进行索引的数据范围;
[0020]创建模块,用于各个线程分别创建对应数据范围的索引文件;
[0021 ]存储模块,用于将各个所述线程创建的所述索引文件进行合并,存储于一个索引目录中。
[0022]可选地,所述存储模块具体用于:
[0023]当各个线程的索引文件创建执行完成后,将各个所述线程创建的所述索引文件进行合并,存储于一个索引目录中。
[0024]可选地,所述创建模块具体用于:
[0025]各个线程分别创建的索引文件互相独立,不会引发锁重叠异常。
[0026]本发明所提供的创建索引文件的方法及装置,根据数据规模以及业务需求,确定执行索引创建的线程数量;然后通过数据规模以及线程数量,确定各个线程分别负责进行索引的数据范围;各个线程分别创建对应数据范围的索引文件;将各个线程创建的所述索引文件进行合并,存储于一个索引目录中。本发明所提供的创建索引文件的方法及装置,采用多线程并行创建索引的方式,提高了索引的效率。
【附图说明】
[0027]图1为本发明所提供的创建索引文件的方法的一种【具体实施方式】的流程图;
[0028]图2为本发明所提供的创建索引文件的方法的另一种【具体实施方式】的流程图;
[0029]图3为本发明实施例提供的创建索引文件的装置的结构框图。
【具体实施方式】
[°03°]在当前的企业全文检索应用领域,基于Lucene的全文检索引擎非常适合处理高并发、低延迟的的查询需求。Lucene的索引是一个写独占、读共享的结构,这意味着,在使用多线程进行添加索引时,性能并不会得到明显的提升,所以任何时刻只能有一个线程对索引进行写入操作,如果同一时刻有多个不同IndexWriter对索引进行写入操作,那么将会引发锁重叠异常,所以Lucene的特殊的索引结构,决定了其只能使用一个IndexWriter对索引进行添加操作。这样对于大数据量的索引,如果无法实现并行创建索引,索引的过程将十分耗时。鉴于此,本发明的核心是提供一种可并发创建索引文件的方法及装置。
[0031]为了使本技术领域的人员更好地理解本发明方案,下面结合附图和【具体实施方式】对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0032]本发明所提供的创建索引文件的方法的一种【具体实施方式】的流程图如图1所示,该方法包括:
[0033]步骤S101:根据数据规模以及业务需求,确定执行索引创建的线程数量;
[0034]步骤S102:通过所述数据规模以及所述线程数量,确定各个线程分别负责进行索引的数据范围;
[0035]步骤S103:各个线程分别创建对应数据范围的索引文件;
[0036]步骤S104:将各个所述线程创建的所述索引文件进行合并,存储于一个索引目录中。
[0037]本发明所提供的创建索引文件的方法,根据数据规模以及业务需求,确定执行索引创建的线程数量;然后通过数据规模以及线程数量,确定各个线程分别负责进行索引的数据范围;各个线程分别创建对应数据范围的索引文件;将各个线程创建的所述索引文件进行合并,存储于一个索引目录中。本发明所提供的创建索引文件的方法及装置,采用多线程并行创建索引的方式,提高了索引的效率。
[0038]本发明所提供的创建索引文件的方法的另一种【具体实施方式】的流程图如图2所示,与上一实施例相比,本实施例中增加了对各个线程的索引文件是否全部创建完成的判断,该方法包括:
[0039]步骤S201:根据数据规模以及业务需求,确定执行索引创建的线程数量;
[0040]步骤S202:通过所述数据规模以及所述线程数量,确定各个线程分别负责进行索引的数据范围;
[0041]步骤S203:各个线程分别创建对应数据范围的索引文件,并存储于不同的路径中;
[0042]步骤S204:判断各个线程索引是否均执行完成;
[0043]步骤S205:当各个线程的索引文件创建均执行完成后,将各个所述线程创建的所述索弓I文件进行合并,存储于一个索引目录中。
[0044]本实施例基于Lucene架构的检索引擎,在进行索引的数据规模很大,采用传统的索引方式无法满足需求时,采用多线程并行创建索引的方式来提高索引的效率。首先根据数据规模和实际需要,确定执行索引创建的线程数量,根据线程的数量与数据计算出各个线程需要负责进行索引的数据范围即数据便宜量。各线程执行索引创建的过程中,分别将索引存储到各种的索引目录,当各个线程的索引创建任务执行完成后,将各个线程创建的索引文件进行合并操作,将其合并到一个索引目录下,从而实现了并行创建索引的目的。
[0045]在上述任一实施例的基础上,本申请中并行进行的索引创建需要互不影响,不会引发锁重叠异常。
[0046]下面对本发明实施例提供的创建索引文件的装置进行介绍,下文描述的创建索引文件的装置与上文描述的创建索引文件的方法可相互对应参照。图3为本发明实施例提供的创建索引文件的装置的结构框图,参照图3创建索引文件的装置可以包括:
[0047]第一确定模块100,用于根据数据规模以及业务需求,确定执行索引创建的线程数量;
[0048]第二确定模块200,用于通过所述数据规模以及所述线程数量,确定各个线程分别负责进行索引的数据范围;
[0049]创建模块300,用于各个线程分别创建对应数据范围的索引文件;
[0050]存储模块400,用于将各个所述线程创建的所述索引文件进行合并,存储于一个索引目录中。
[0051]作为一种【具体实施方式】,本发明所提供的创建索引文件的装置中存储模块400可以具体用于:
[0052]当各个线程的索引文件创建执行完成后,将各个所述线程创建的所述索引文件进行合并,存储于一个索引目录中。
[0053]作为一种【具体实施方式】,本发明所提供的创建索引文件的装置,中创建模块300可以具体用于:
[0054]各个线程分别创建的索引文件互相独立,不会引发锁重叠异常。
[0055]本发明所提供的创建索引文件的装置,根据数据规模以及业务需求,确定执行索引创建的线程数量;然后通过数据规模以及线程数量,确定各个线程分别负责进行索引的数据范围;各个线程分别创建对应数据范围的索引文件;将各个线程创建的所述索引文件进行合并,存储于一个索引目录中。本发明所提供的创建索引文件的方法及装置,采用多线程并行创建索引的方式,提高了索引的效率。
[0056]本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
[0057]对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
【主权项】
1.一种创建索引文件的方法,其特征在于,包括: 根据数据规模以及业务需求,确定执行索引创建的线程数量; 通过所述数据规模以及所述线程数量,确定各个线程分别负责进行索引的数据范围; 各个线程分别创建对应数据范围的索引文件; 将各个所述线程创建的所述索引文件进行合并,存储于一个索引目录中。2.如权利要求1所述的创建索引文件的方法,其特征在于,所述将各个所述线程创建的所述索引文件进行合并,存储于一个索引目录中包括: 当各个线程的索引文件创建执行完成后,将各个所述线程创建的所述索引文件进行合并,存储于一个索引目录中。3.如权利要求1或2所述的创建索引文件的方法,其特征在于,所述各个线程分别创建对应数据范围的索引文件包括: 各个线程分别创建的索引文件互相独立,不会引发锁重叠异常。4.一种创建索引文件的装置,其特征在于,包括: 第一确定模块,用于根据数据规模以及业务需求,确定执行索引创建的线程数量;第二确定模块,用于通过所述数据规模以及所述线程数量,确定各个线程分别负责进行索引的数据范围; 创建模块,用于各个线程分别创建对应数据范围的索引文件; 存储模块,用于将各个所述线程创建的所述索引文件进行合并,存储于一个索引目录中。5.如权利要求4所述的创建索引文件的装置,其特征在于,所述存储模块具体用于: 当各个线程的索引文件创建执行完成后,将各个所述线程创建的所述索引文件进行合并,存储于一个索引目录中。6.如权利要求4或5所述的创建索引文件的装置,其特征在于,所述创建模块具体用于: 各个线程分别创建的索引文件互相独立,不会引发锁重叠异常。
【专利摘要】本发明公开了一种创建索引文件的方法及装置,该方法包括:根据数据规模以及业务需求,确定执行索引创建的线程数量;通过所述数据规模以及所述线程数量,确定各个线程分别负责进行索引的数据范围;各个线程分别创建对应数据范围的索引文件;将各个所述线程创建的所述索引文件进行合并,存储于一个索引目录中。本发明所提供的创建索引文件的方法及装置,采用多线程并行创建索引的方式,提高了索引的效率。
【IPC分类】G06F17/30
【公开号】CN105488124
【申请号】CN201510822336
【发明人】金洪殿, 赵仁明, 亓开元
【申请人】浪潮(北京)电子信息产业有限公司
【公开日】2016年4月13日
【申请日】2015年11月24日