一种面向微博实时搜索的自适应索引方法技术

技术编号:11882514 阅读:86 留言:0更新日期:2015-08-13 15:36
本发明专利技术公开了一种面向微博实时搜索的自适应索引方法,该方法包括:新建大小为π0的第0层倒排索引i0;将新的微博索引到第0层倒排索引i0;当第0层倒排索引i0空间不够时,生成第0层倒排索引i0的副本第0层副本i0`,将微博插入到清空后的第0层倒排索引i0;判断当前存在索引包的数量k<=p是否成立,若是,则创建大小为rk×π0的第k层索引包jk;若否,则创建大小为rk×π0的第k层倒排索引ik;若当前层索引空间不够,将当前层索引内容移动到下一层;监测用户查询请求到达速率的变化情况,据此对索引结构进行自适应的调整。本发明专利技术能够解决现有索引方法中存在的查询效率不高、无法适应外部动态环境的问题。

【技术实现步骤摘要】

本专利技术属于信息
,更具体地,涉及。
技术介绍
微博实时搜索对微博信息进行即时而快速的搜索,相比传统网页搜索,微博实时搜索需要索引方法具备低延时、高插入率、实时数据可用性以及高查询效率的特点;现有的实时索引方法主要包括Earlybird、推文索引(Tweet Index, TI)和日志结构倒排索引(Log-Structured Inverted Indices,LSII)。Earlybird 米取了一种直接将单个倒排索引结构切分成多段较小的独立倒排索引结构的方法;TI采取了一种只索引热门微博的部分索引方法;LSII提出了一种日志结构的倒排索引结构。相比Earlybird和TI,LSII解决了索引碎片和查询精度低下的问题;但由于缺乏合适的索引合并策略,LSII带来了较大的合并开销,造成了查询性能的下降。目前应用在微博实时索引结构中的合并策略主要包括周期合并、直接合并和懒惰合并。TI采取周期合并来提高微博更新的效率,LSII采取直接合并策略维持适量的倒排索引数量,Mercury采取懒惰合并策略来回收空的索引。由于微博系统的运行环境时刻在变化(主要体现在微博系统每秒接收到的新微博数量和查询请求的变化),对于给定的索引结构,高的查询请求到达速率会带来系统查询资源的匮乏,导致较大的查询请求排队延迟;相反,低的查询请求到达速率会导致查询资源处于空闲状态,造成查询资源利用率低下的问题。为了提高动态环境下微博系统的查询性能和稳定性,索引结构需要自适应的策略来合理利用系统的查询资源。
技术实现思路
针对现有技术的以上缺陷或改进需求,本专利技术提供了,其目的在于减少索引合并开销并合理利用系统的查询资源,由此解决现有索引方法查询效率不高、无法适应外部动态环境的问题。为实现上述目的,按照本专利技术的一个方面,提供了,具体如下:(I)判断是否已创建第O层倒排索引Ici,若是,则进入步骤(3);若否,则创建一个空间大小为Jici的第O层倒排索引Itl,进入步骤(2);(2)将新的微博索引到第O层倒排索引iQ;(3)判断第O层倒排索引^里的微博数量是否达到C1,若是,则生成第O层倒排索引1的副本即第O层副本icT,并将第ο层倒排索引L清空,将上述新的微博插入到清空后的第O层倒排索引Ici,进入步骤⑷;若否,则进入步骤(2);(4)判断是否已创建第k层索引包jk,若是,则进入步骤(6);若否,则创建一个空间大小为rkX 3!(|的第1^层索引包1,进入步骤(5);其中,索引包为一种能存放多个倒排索引的数据结构;其中,k = I…m,m是索引结构的总层数;其中,r是指索引包可容纳的倒排索引数量的最大值,r = 2?20。(5)将第k-Ι层副本V1'移动到第k层索引包jk;(6)判断第k层索引包jk索引里的微博数量是否达到r kX μ若是,进入步骤(7);若否,则进入步骤(5);(7)批量合并第k层索引包jk中的所有倒排索引,获取第k层副本i k',进入步骤(8);(8)将第k层索引包jk清空,并将第k层副本ik'移动到清空后的第k层索引包jk,进入步骤(9);(9)k = k+l,判断加I后的k是否大于p,若是,则进入步骤(10);若否,则进入步骤(4);其中,P是指索引结构可容纳的索引包数量的最大值;(10)判断是否已创建第k层倒排索引ik,若是,则进入步骤(11);若否,则将第k层倒排索引ik的指针指向第k-Ι层副本ik_i',并设置第k层倒排索引ik的空间大小为rkX π ο;(11)判断第k层倒排索引ik索引里的微博数量是否达到rkX 若是,将第k层副本ik'的指针指向第k层倒排索引ik,将第k层倒排索引ik的指针指向第k-Ι层副本ik-Γ,进入步骤(13);若否,进入步骤(12);(12)将第k-Ι层副本V1'与第k层倒排索引ik直接合并到第k层倒排索引i k;(13)判断k是否等于m,若是,则将第k层副本ik'存放到硬盘;若否,则k = k+Ι,并进入步骤(10)。优选地,步骤⑵包含以下子步骤:(2-1)对新的微博进行分词处理,形成二元组(tx,d),具体为:;其中,第X个单词tx表示微博经过分词处理后所包含全部单词中第X个单词的id,d表示微博的id ;x = I…η,η表示微博经过分词处理后所包含单词的数量;(2-2)针对每个单词tx,找到第O层倒排索引Ici中t x指向的倒排表,将d插入到该倒排表首位;其中,倒排表表示倒排索引中用于存放微博id的链表结构;对新的微博完成索引。优选地,步骤(5)包含以下子步骤:(5-1)判断k是否为1,若是,则进入子步骤(5-2);若否,则将第k_l层副本L1'移动到第k层索引包jk的空闲空间;(5-2)扫描第k-Ι层副本ikV,获取全部单词id,进入子步骤(5-3);(5-3)针对每个单词id,获取单词id指向的倒排表并将倒排表由原本的链表结构转换为固定数组结构;处理完成后,进入子步骤(5-4);该子步骤中将倒排表的结构由链表转换为适合查询的固定数组结构,可以有效提高索引的查询性能;(5-4)将第k-Ι层副本ik_r移动到第k层索引包jk的空闲空间。优选的,步骤(7)包含以下子步骤:(7-1)创建空的第k层副本ik' ;(7-2)对第k层索引包jk包含的r个倒排索引进行扫描,获取倒排索引包含的全部单词id ;(7-3)针对每个单词id,对第k层索引包jk包含的r个倒排索引进行扫描,获取该单词id指向的r个倒排表,并将r个倒排表进行首尾合并,合并的结果存到第k层副本i;中该单词id指向的倒排表中;处理完成后,获取批量合并完成后的第k层副本ik'其中,子步骤(7-2)与(7-3)采取批量合并的方法,能有效降低索引合并的开销,提尚查询的性能。优选的,步骤(12)包含以下子步骤:(12-1)扫描第k-Ι层副本iH',获取其包含的全部单词id ;(12-2)针对每个单词id,获取该单词id指向的倒排表,并将倒排表合并到第k层倒排索引ik中该单词id的倒排表中;处理完成后,获取直接合并完成后的第k层倒排索引其中,步骤(12-1)与(12-2)采取直接合并的策略,可以控制倒排索引的总体数量以及查询资源的使用情况,且避免了当倒排索引较大时采用批量合并策略造成的资源利用不当的情况。优选的,在步骤(13)之后还包括以下步骤:(14)对每秒钟到达的用户查询请求数量进行监测,实时获取用户查询请求的到达速率;(15)根据用户查询请求到达速率的变化情况对索引结构进行自适应的调整,具体包含以下子步骤;(15-1)判断用户查询请求到达速率是否上升,若是,则减小P值,进入步骤(15-2);若否,则增大P值,进入步骤(15-3);(15-2)将处于变化前P值与变化后P值间的索引包包含的倒排索引批量合并,获取合并后的倒排索引;(15-3)将处于变化前P值与变化后P值间的倒排索引等量切分成r个较小的倒排索引,并将该r个倒排索引组成为新的索引包。上述步骤(15),根据查询请求到达速率的变化情况,改变P值来调节索引结构,可自适应地调节查询资源的使用情况,提高动态环境下索引结构的稳定性。总体而言,通过本专利技术所构思的以上技术方案与现有技术相比,能够取得下列有益效果:(I)本专利技术提供的面向微博实时搜索的自适应索引本文档来自技高网...
一种<a href="http://www.xjishu.com/zhuanli/55/CN104834726.html" title="一种面向微博实时搜索的自适应索引方法原文来自X技术">面向微博实时搜索的自适应索引方法</a>

【技术保护点】
一种面向微博实时搜索的自适应索引方法,其特征在于,所述方法具体如下:(1)判断是否已创建第0层倒排索引i0,若是,则进入步骤(3);若否,则创建一个空间大小为π0的第0层倒排索引i0,进入步骤(2);(2)将新的微博索引到第0层倒排索引i0;(3)判断第0层倒排索引i0里的微博数量是否达到π0,若是,则生成第0层倒排索引i0的副本即第0层副本i0`,并将第0层倒排索引i0清空,将所述新的微博插入到清空后的第0层倒排索引i0,进入步骤(4);若否,则进入步骤(2);(4)判断是否已创建第k层索引包jk,若是,则进入步骤(6);若否,则创建一个空间大小为rk×π0的第k层索引包jk,进入步骤(5);其中,索引包为一种能存放多个倒排索引的数据结构;其中,r=2~20;k=1…m,m是索引结构的总层数;(5)将第k‑1层副本ik‑1`移动到第k层索引包jk;(6)判断第k层索引包jk里的微博数量是否达到rk×π0,若是,进入步骤(7);若否,则进入步骤(5);(7)批量合并第k层索引包jk中的所有倒排索引,获取第k层副本ik`,进入步骤(8);(8)将第k层索引包jk清空,并将第k层副本ik`移动到所述清空后的第k层索引包jk,进入步骤(9);(9)k=k+1,判断加1后的k是否大于p,若是,则进入步骤(10);若否,则进入步骤(4);其中,p是指索引结构可容纳的索引包数量的最大值;(10)判断是否已创建第k层倒排索引ik,若是,则进入步骤(11);若否,则将第k层倒排索引ik的指针指向第k‑1层副本ik‑1`,并将第k层倒排索引ik的空间大小设为rk×π0;(11)判断第k层倒排索引ik里的微博数量是否达到rk×π0,若是,将第k层副本ik`的指针指向第k层倒排索引ik,将第k层倒排索引ik的指针指向第k‑1层副本ik‑1`,进入步骤(13);若否,进入步骤(12);(12)将第k‑1层副本ik‑1`与第k层倒排索引ik直接合并到第k层倒排索引ik;(13)判断k是否等于m,若是,则将第k层副本ik`存放到硬盘;若否,则k=k+1,并进入步骤(10)。...

【技术特征摘要】

【专利技术属性】
技术研发人员:赵峰金海柳俊李少峰
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北;42

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

1