一种建立索引的方法及装置的制造方法_2

文档序号:8498700阅读:来源:国知局
要将合并因子η选择较大,这样可以降低单位时间内刷入索引的合并次数,反之,则将合并因子选择较小的数。这个可以通过实际的刷入索引生成速度决定。
[0053]在刷入索引合并的过程中,参与合并的刷入索引扔对外提供搜索服务,当索引合并完成后,新生成的刷入索引开始对外提供服务。之前参与合并的刷入索引对应的资源引用技术减1,保证合并过程中连接到参与合并的刷入索引的查询访问的线程正常结束。
[0054]刷入索引合并的正常结束:参与合并的刷入索引生成合并后的新索引,新的刷入索引生成后新的查询访问任务连接到新的索引上,同时在合并完成之前连接到参与合并的刷入索引上的查询任务正常结束后,就不再有新的查询访问任务连接进来。
[0055]在合并过程中,如果出现了宕机或者异常情况,合并事务未正常结束,则对合并事务进行回滚,清理掉合并后的新的刷入索引,同时参与合并的刷入索引继续正常对外提供查询访问服务。
[0056]假设我们选择的合并影响因素为2,则表示在刷入索引中存在两个大小一样的
[0057]时候对刷入索引进行合并。现在刷入索引中存在index_flush_0和index_flush_l的大小一致,贝丨」开始将它们合并成index_flush_2。在合并为index_flush_2的过程中,index_flush_0和index_flush_l继续对外提供正常的服务。当完全合并为index_flush_2 后,index_flush_2 开始对外提供服务。同时将 index_flush_0 和 index_flush_l上的资源引用计数减1,。当index_flush_0和index_flush_l上的查询访问任务线程结束后,就正常关闭索引 index_flush_0 和 index_flush_l。
[0058]步骤102,将所述合并索引与当前的全量索引根据预设的算法进行合并,生成新的全量索引,所述新的全量索引用于用户进行数据搜索。
[0059]优选地,所述将所述合并索引与当前的全量索引根据预设的算法进行合并,生成新的全量索引,所述新的全量索引用于用户进行数据搜索,包括:
[0060]将所述合并索引与当前的全量索引进行合并,生成新的全量索引和新的合并任务,建立所述新的全量索引和所述新的合并任务的连接;
[0061]将所述新的全量索引存储到存储模块中,监控是否完成所述当前全量索引对应的搜索任务;
[0062]在监控到已完成所述当前全量对应的搜索任务后,删除所述当前全量索引。
[0063]具体的,建立索引数据的索引,并将建立后的索引存储到内存的索引A区,当内存索引A区的大小达到阈值,则将内存索引A区的数据拷贝到索引B区,将内存索引B区的索引刷入存储空间中,以子索引形式切区分于全量索引存储。
[0064]当合并索引的数量增加时,将合并索引与全量索引进行合并,生成相关的合并任务。将合并任务提交给分布式计算集群进行合并索引和全量索引的合并,合并后的新的全量索引存储到存储模块中,监控现在对于旧的全量索引的搜索任务,将新的搜索任务连接到新的全量索引,等待旧的全量索引上的搜索任务的完成,新的全量索引平滑切换旧的全量索引,当全量索引切换完成,删除旧的全量索引,新的全量索引开始全面对外提供搜索任务。
[0065]本发明实施例通过监控磁盘中存储的刷入索引,合并满足预设的合并策略的刷入索引,生成合并索引;将所述合并索引与当前的全量索引根据预设的算法进行合并,生成新的全量索引,所述新的全量索引用于用户进行数据搜索,通过对现有生成的较小的索引按照一定的规则进行合并,从而减少较小的索引的个数,当索引碎片的大小达到一定的阈值后,则采用全量索引构建的策略,从而降低了搜索引擎的性能消耗,影响整个搜索任务和索引建立等任务的效率。
[0066]实施例二
[0067]参考图2,图2是本发明建立索引的方法第二实施例的方法流程示意图。
[0068]在实施例一中,所述方法还包括:
[0069]步骤103,判断是否达到构建全量索引的时间间隔,若是,则执行将所述合并索引与当前的全量索引根据预设的算法进行合并,生成新的全量索引,所述新的全量索引用于用户进行数据搜索。
[0070]具体的,随着索引合并任务的不断进行,生成的刷入索引的大小会越来越大,继续对现有的刷入索引进行合并会造成很大的性能损耗。在这种情况下,通过全量索引的构建来解决索引合并带来的性能损耗问题,同时又提高了实时索引和搜索的效率。
[0071]通过设置全量索引构建的时间周期来满足实时索引更新和搜索服务性能的要求。对于实时索引更新速度较快,一般采取按天为单位索引更新量少的时间段进行全量索引构建的方法。
[0072]实施例三
[0073]参考图3,图3是本发明建立索引的装置的功能模块示意图。
[0074]在实施例三中,所述建立索引的装置包括:
[0075]第一生成单元301,用于监控磁盘中存储的刷入索引,合并满足预设的合并策略的刷入索引,生成合并索引;
[0076]优选地,所述第一生成单元301,用于:
[0077]监控当前磁盘中存储的刷入索引文件,获取η个大小一致的刷入索引,合并获取到的η个大小一致的刷入索引,生成合并索引。
[0078]优选地,所述第一生成单元301,用于:
[0079]监控磁盘中存储的刷入索引,根据所述刷入索引生成的速度预估设置合并影响因子;
[0080]当所述刷入索引大小一致的个数达到指定的合并影响因子时,则合并指定的合并影响因子的大小一致的刷入索引,生成合并索引。
[0081]具体的,在实时索引不断生成的同时,内存中会触发内存索引写盘的动作,当内存中的实时索引的大小达到一定的阈值后,则将索引写入到磁盘中进行持久化,也就产生了刷入索引。当写入磁盘的刷入索引不断增多的时候,会导致搜索任务和索引任务的性能的降低。通过对现有的刷入索引进行合并,减少索引文件的个数,达到性能的优化。
[0082]存储到磁盘的索引文件,本文采取index_flush_0、index_flush_l......等方式命名,当刷入的索引文件增多时,这些文件就必须通过合并的方式来减少文件的个数。
[0083]对于刷入索引的合并策略:监控当前磁盘中存储的刷入索引文件,采取当出现η个大小一致的刷入索引时,就对当前的刷入索引进行合并,其中的因子η可以通过测试进行选择。
[0084]合并因子η的选择策略:刷入索引生成速度较快,则需要将合并因子η选择较大,这样可以降低单位时间内刷入索引的合并次数,反之,则将合并因子选择较小的数。这个可以通过实际的刷入索引生成速度决定。
[0085]在刷入索引合并的过程中,参与合并的刷入索引扔对外提供搜索服务,当索引合并完成后,新生成的刷入索引开始对外提供服务。之前参与合并的刷入索引对应的资源引用技术减1,保证合并过程中连接到参与合并的刷入索引的查询访问的线程正常结束。
[0086]刷入索引合并的正常结束:参与合并的刷入索引生成合并后的新索引,新的刷入索引生成后新的查询访问任务连接到新的索引上,同时在合并完成之前连接到参与合并的刷入索引上的查询任务正常结束后,就不再有新的查询访问任务连接进来。
[0087]在合并过程中,如果出现了宕机或者异常情况,合并事务未正常结束,则对合并事务进行回滚,清理掉合并后的新的刷入索引,同时参与合并的刷入索引继续正常对外提供查询访问服务。
[0088]假设我们选择的合并影响因素为2,则表示在刷入索引中存在两个大小一样的
[0089]时候对刷入索引进行合并。现在刷入索引中存在index_flush_0和index_flush_l的大小一致,贝丨」开始将它们合并成index_flush_2。在合并为index_flush_2的过程中,index_flush_0和index_flush_l继续对外提供正常的服务。当完全合并为index_flush_2
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1