一种修改Lucene索引文件中词的方法及装置制造方法及图纸

技术编号:11230899 阅读:85 留言:0更新日期:2015-03-29 18:23
本发明专利技术公开了一种修改Lucene索引文件中词的方法及装置,该方法首先获取修改参数,然后对于索引文件夹中每一个段,查找该段中要修改字段是否存在旧词,如果存在则进入下一步,否则放弃对该段的修改;对要修改的段,生成新词对应的信息;并根据该段中原先就存在的除旧词和新词外其他词对应的信息、以及新词对应的信息,新生成四个倒排文件;最后在所有段都处理完成后,用新生成的四个倒排文件集中替换原索引文件夹中对应的文件。本发明专利技术还同时公开了实现上述方法的装置,本发明专利技术的方法及装置通过直接操作索引文件的方式,避免了重新创建索引的繁琐,极大地提高了修改的性能。

【技术实现步骤摘要】
【专利摘要】本专利技术公开了一种修改Lucene索引文件中词的方法及装置,该方法首先获取修改参数,然后对于索引文件夹中每一个段,查找该段中要修改字段是否存在旧词,如果存在则进入下一步,否则放弃对该段的修改;对要修改的段,生成新词对应的信息;并根据该段中原先就存在的除旧词和新词外其他词对应的信息、以及新词对应的信息,新生成四个倒排文件;最后在所有段都处理完成后,用新生成的四个倒排文件集中替换原索引文件夹中对应的文件。本专利技术还同时公开了实现上述方法的装置,本专利技术的方法及装置通过直接操作索引文件的方式,避免了重新创建索引的繁琐,极大地提高了修改的性能。【专利说明】一种修改Lucene索引文件中词的方法及装置
本专利技术属于数据库索引
,尤其涉及一种修改Lucene索引文件中词的方法及装置。
技术介绍
在交通管理系统中,车辆信息管理是其中一项重要功能。其功能主要是将通过某个路口的车辆信息如:时间、地点、速度、车型、图片、告警信息等保存到数据库中。随着数据库的日益庞大,以及对搜索速度的高要求,一般需要使用其它搜索引擎(如Lucene)对数据库中的数据重新创建索引。这样,即使数据库达到了十亿级别的数量,系统的查询功能仍然可以达到理想的响应速度。 使用Lucene虽然能大幅度提高搜索性能,但也出现了新的难题。由于客观或主观原因,保存在数据库中的某些信息有可能会出现错误。比如,在现实生活中,操作人员的不小心,把原本属于某个行政区划的社区误设为其它行政区的社区。这样它从一开始创建索引的时候就出现了信息上的错误问题,反映在Lucene的索引文件中,就是某一个字段发生了错误。 而如果要纠正错误,Lucene本身提供了三种操作方式:增、删、改。增,很好理解,就是在现有的索引文件中再增加一条记录,这些记录在Lucene中被称为Document ;删,可以根据特定条件查询,然后删除掉符合条件的Document ;改,需要注意的是,Lucene中的改并不意味着可以直接修改索引文件的内容,它本质上是删与增的结合,即先把错误的Document全部删掉,再把修改正确之后的记录一条一条加进来。这种处理方式相当于重新去数据库中抓取数据,创建先前有错误的那部分索引。现有技术虽然在理论上可以解决交通系统所遇到的问题,但它存在着如下的缺点: 交通系统在使用中,如果一开始就弄错了某些设定信息,那么之后保存的相关所有索引记录都会存在问题。使用现有技术来解决这个问题意味着,系统需要重建海量的索引,这样一来就会对数据库造成很大的压力。 另外索引的创建是一个非常耗时的过程,假设索引的重建是可以接受的,那么也需要花费大量的时间来进行这项工作。比如在集群下创建10亿量级的索引,需要花费数天的时间才能完成,这在商业应用中很难让人忍受。
技术实现思路
本专利技术的目的是提供一种修改Lucene索引文件中词的方法及装置,实现在不影响搜索功能的前提下,将索引文件中的错误字段更改正确,能够快速地实现索引文件的修改,避免了重新挖掘数据库所带来的繁琐与运行压力,具有较高的商业价值。 为了实现上述目的,本专利技术技术方案如下: 一种修改Lucene索引文件中词的方法,所述方法包括步骤: 步骤1、获取修改参数,包括要修改字段、要修改的旧词以及修改后的新词; 步骤2、对于索引文件夹中每一个段,查找该段中要修改字段是否存在旧词,如果存在则进入下一步,否则放弃对该段的修改; 步骤3、获取当前处理的段中旧词所对应的信息,判断当前处理的段中要修改字段是否已经存在与新词相同的词,如果存在与新词相同的词,则将与新词相同的词对应的信息与旧词对应的信息进行合并,生成新词对应的信息,否则直接根据旧词对应的信息生成新词对应的信息; 步骤4、根据当前处理的段中原先就存在的除旧词和新词外其他词对应的信息、以及新词对应的信息,新生成四个倒排文件segment, tim、segment, tip、segment, doc以及segment, pos; 步骤5、等到所有的段都处理完毕,用新生成的四个倒排文件集中替换原索引文件夹中对应的文件。 进一步地,本专利技术对于批量词修改,在所述步骤I之前,所述方法还包括步骤: 获取修改参数中所有要修改的旧词以及修改后的新词,将所有的新词按照字典顺序进彳T排序; 遍历索引文件夹中所有的段,获取段中所有旧词所对应的信息; 对将要修改为同一个新词的所有不同旧词对应的信息进行合并,作为一个旧词来处理。 进一步地,本专利技术对于动态修改索引文件,在所述方法之前还包括步骤: 停止创建索引,结束正在进行的段合并过程; 获取索引文件夹中所有段的名称,写入特定文件夹下的info, txt文件,使存在于info, txt文件中的段不参与合并过程; 重新使能索引的创建; 而在所述方法步骤5之后,所述方法还包括步骤: 删除info, txt文件,使索引文件的修改立即被查询获取。 其中,所述对应的信息包括文档号和出现的频率,所述将与新词相同的词对应的信息与旧词对应的信息进行合并,包括步骤: 将与新词相同的词,以及旧词看作同一个词,重新按照Lucene既定规则组织两者对应的信息,以重新组织得到的文档号作为他们对应的新词的文档号,以两者的出现频率的和作为他们对应的新词的出现频率。 进一步地,所述步骤4具体包括步骤: 步骤S4.1、对要生成的四个索引文件 segment, tim、segment, tip、segment, doc、segment, pos创建内存文件,即开辟内存空间,并且按照固定格式写好文件头; 步骤S4.2、针对每一个字段,按照除旧词外的其他词与新词的字典顺序,依次将他们的对应的信息,以及位置信息,写入segment, doc>segment, pos文件,根据FST原理,生成termBlock,并写入 segment, tim、segment, tip 文件; 步骤S4.3、在所有字段的每一个词都处理完毕后,根据固定格式为四个文件写好文件尾。 本专利技术还提出了一种修改Lucene索引文件中词的装置,所述装置包括: 参数获取模块,用于获取修改参数,包括要修改字段、要修改的旧词以及修改后的新词; 修改判断模块,用于对索引文件夹中每一个段,查找该段中要修改字段是否存在旧词,如果存在则转入信息合并模块进行处理,否则放弃对该段的修改; 信息合并模块,用于获取当前处理的段中旧词所对应的信息,判断当前处理的段中要修改字段是否已经存在与新词相同的词,如果存在与新词相同的词,则将与新词相同的词对应的信息与旧词对应的信息进行合并,生成新词对应的信息,否则直接根据旧词对应的信息生成新词对应的信息; 倒排文件生成模块,用于根据当前处理的段中原先就存在的除旧词和新词外其他词对应的信息、以及新词对应的信息,新生成四个倒排文件segment, tim、segment, tip、segment, doc 以及 segment, pos ; 文件替换模块,用于等到所有的段都处理完毕,用新生成的四个倒排文件集中替换原索引文件夹中对应的文件。 进一步地,所述装置还包括批量词合并模块,所述批量词合并模块用于执行以下操本文档来自技高网
...
一种修改Lucene索引文件中词的方法及装置

【技术保护点】
一种修改Lucene索引文件中词的方法,其特征在于,所述方法包括步骤:步骤1、获取修改参数,包括要修改字段、要修改的旧词以及修改后的新词;步骤2、对于索引文件夹中每一个段,查找该段中要修改字段是否存在旧词,如果存在则进入下一步,否则放弃对该段的修改;步骤3、获取当前处理的段中旧词所对应的信息,判断当前处理的段中要修改字段是否已经存在与新词相同的词,如果存在与新词相同的词,则将与新词相同的词对应的信息与旧词对应的信息进行合并,生成新词对应的信息,否则直接根据旧词对应的信息生成新词对应的信息;步骤4、根据当前处理的段中原先就存在的除旧词和新词外其他词对应的信息、以及新词对应的信息,新生成四个倒排文件segment.tim、segment.tip、segment.doc以及segment.pos;步骤5、等到所有的段都处理完毕,用新生成的四个倒排文件集中替换原索引文件夹中对应的文件。

【技术特征摘要】

【专利技术属性】
技术研发人员:王新成
申请(专利权)人:浙江宇视科技有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1