一种实时搜索的方法技术

技术编号:7898254 阅读:184 留言:0更新日期:2012-10-23 04:24
本发明专利技术提供了一种实时搜索的方法,该方法包括以下步骤:将数据文档按照时间顺序生成多段索引;从各索引段中提取部分数据,予以缓存,其中,根据各段的生成时间确定提取该段进行缓存的数据量;搜索数据时,先从缓存中搜索各索引段的文档,缓存中存在目标数据时,则返回目标数据;否则,从其他存储单元中搜索数据;将从缓存所搜索的目标数据和/或从存储单元中所搜索的目标数据予以合并,返回合并的数据。本发明专利技术提供的方案针对不同时间段的数据,采用不同的缓存方案,提高了实时搜索的效率和灵活性。

【技术实现步骤摘要】

本专利技术涉及搜索技术,尤其涉及。
技术介绍
互联网的飞速发展,给搜索引擎提出了新的难题,由于网络信息的爆炸性增长,大规模的web搜索引擎平均每秒需要处理上万次搜索请求,每个搜索的处理需要涉及到海量的索引,因此,索引处理已经成为搜索引擎的主要的性能瓶颈。现有的搜索方案中,对于实时搜索,虽然可以一边提供查询的功能,一边提供修改的数据排序字段,例如一张员工数据表中,存储了员工的编号、姓名、工作日期共三个字段的信息,而索引是按照“编号”的排序字段进行建立的,则用户需要查询以“工作日期”为排序字段的前十名员工的信息,则可以一边返回查询的数据给用户,一边修改数据的排序字段,以便于下次较快地返回以“工作日期”为排序字段的所有员工的信息,但是,由于没有适用缓存,针对每一次新的搜索请求,都需要从索引中检索数据,并对索引中的数据进行重新排序,由此,延长了数据搜索的时间,降低了搜索系统的性能。
技术实现思路
根据对大量用户的搜索习惯和规律进行调查发现,在一段时间内大量用户会对一些当前热门关键词进行搜索,而搜索过程中生成的索引和搜索结果在预定时间内是保持不变。如果能够充分利用先前已经形成的索引和搜索结果可以减少为相同的搜索请求重复生成搜索结果的服务器时间和负荷。为此本专利技术的目的是提供,该方法包括以下步骤将数据文档按照时间顺序生成多段索引;从各索引段中提取部分数据,予以缓存,其中,根据各段的生成时间确定提取该段进行缓存的数据量;搜索数据时,先从缓存中搜索各索弓I段的文档,缓存中存在目标数据时,则返回目标数据;否则,从其他存储单元中搜索数据;将从缓存所搜索的目标数据和/或从存储单元中所搜索的目标数据予以合并,返回合并的数据。与现有技术相比,本专利技术具有以下优点I)通过采用缓存的方案,提高了实时搜索的效率;2)针对不同时间段的数据,采用不同的缓存方案,提高了实时搜索的灵活性。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本专利技术的其它特征、目的和优点将会变得更明显图I为根据本专利技术一个优选实施例的实时搜索方法的流程图2为根据本专利技术的一个优选实施例的数据搜索的方法流程具体实施例方式下面结合附图对本专利技术作进一步详细描述。根据本专利技术,提供了。下文中,将对本专利技术提供的实时搜索的方法进行详细说明。该方法包括以下步骤步骤S101,将数据文档按照时间顺序生成多段索引。具体地,索引的建立和数据搜索的方法可以参照现有技术,例如包括以下步骤a)在内存中预设存储单元的大小和个数,初始化相应的内存空间,记录包括数据 类型和数据内容在内的数据信息,如文本数据及内容;b)初始化索引,在所述索引中存储对应数据信息的各存储单元的地址信息;c)收到搜索请求,通过索引进行数据搜索;d)判断是否搜索得到所需数据,是,则将搜索结果返回;否,则从本地或远程磁盘中搜索并读取所需数据。本技术方案中,根据时间顺序建立多段索引,如建立三段索引,第一段索引中所包含的数据包括一天以内被搜索或更新的数据;第二段索引中所映射的数据包括一天之前三个月以内被搜索或更新的数据;第三段索引中所映射的数据包括前三个月之前被搜索或更新的数据,也就是不同段的索引,所包含的是不同时间段的数据。所述索引段中包括搜索请求和相应的搜索结果。当然,本领域的技术人员应该知晓,索引中由于可以只包含数据中的关键字值和记录号,如索引中包含一张员工表中的“工号”值和排序号,因此,索引比数据本身的内容要小得多,并且,建立索引后,索引中的内容会随着数据的增减或修改而更新。一个完整的索引由多个段组成,每个段是一份可搜索的最小单元,它由多个文档生成,每个文档在段中具有唯一的标识,各个文档可以分别为不同的数据对象类型,包括文本数据对象、图像数据对象、音频数据对象、视频数据对象、可执行程序数据对象等等,并且,每个文档包含一个全局的、唯一的键值,即主键,例如文档的标识号。在每个索引段中,文档按照主键进行排序。步骤S102,从各索引段中提取部分数据,予以缓存,其中,各段所提取的数据量根据段的生成时间予以确定。具体地,对于不同的索引段,从中提取不同量的数据用于缓存。对于较新的段,其缓存的数据量可以多一些,对于时间较早的段,其缓存的数据量可以少一些。为了区分不同段的时间先后,可以对每个段打上其生成的时间戳。所谓时间戳,指的是数据经过每一个路由器时的当地时间。在本专利技术中,时间戳可以指每个索引段的生成时间。通常,每个索引段的缓存数据在一段时间内需要合并,本实施例中,优选地,每个索引段一天内合并一次所缓存的数据,也就是每个索引段的缓存失效时间是一天,例如,索引结构中原有三个索引段,第一个索引段包含的是一天以内的数据,第二个索引段包含的是一天之前三个月以内的数据,第三个索引段包含的是三个月之前的数据,则在每天晚上的十二点对各个索引段的数据进行合并,对于第二天而言,新产生的数据则建立新的索引段予以缓存,当新的索引段中数据累计到一定数量时,不再加入新的数据,由此,按时间戳的顺序,可以对各索引段进行排序。而对于各索引段中所要缓存的数据,即每个索引段所确定的缓存空间,则根据段的生成时间予以确定。例如,对于一天以内生成或更新的数据,由于此类数据较新,被用户搜索的可能性很大,因此,尽可能多地将这些数据予以缓存,以提高实时搜索的效率。而对于三个月以前生成或更新过的数据,由于此类数据的时间较为久远,被用户搜索的可能性很小,因此,可以只提取小部分的数据予以缓存,就能满足用户实时搜索的需求。再例如,原有两段索引,第一段索引存储的是一天以内的数据(包括本数),第二段索引存储的是一天之前的数据,那么,对于第一段索引,由于该段中生成的数据相对较新,被搜索的可能性较大,并且,该段中数据文档的排序由于搜索的不确定性可能波动较大,那么,对于这样的段,该段中缓存的数据文档相对要多一些,否则,如果缓存过小,有些数据文档之前由于排序字段的原因被排在后面而不能缓存,但是由于是新数据,排序字段波动较大,当新数据突然置于搜索的热门位置时,由于没有缓存,只能从其他存储单元中进行搜索,使得实时搜索的效率大大降低。因此,为了提高热门数据的实时搜索效率,不因数据的 排序字段一时排后而突然超前时,数据没有能够缓存而影响数据搜索的效率,需要根据不同索引段的生成时间,设定不同的缓存空间,甚至,对于最新的索引段,将用户所需要搜索的与该索引段相关的所有数据予以缓存,提高实时搜索的效率。在缓存的索引段中包括部分重复搜索请求的搜索结果。具体来说,将预定时间内超过预定次数的搜索请求的搜索结果进行缓存,当再次接收到相同搜索请求时直接调出已缓存的搜索结果。例如统计过去3天内被重复超过10000次的搜索请求。假设,搜索“出租房屋”在过去3天被请求12000次。则将该搜索请求的搜索结果包含在索引段中进行缓存。当再次请求该搜索时,直接从缓存中调出缓存的搜索结果。该缓存的搜索结果可以实时更新。当然,由于时间较新的索引段,其内容更新的速度较快,为了满足用户的数据搜索需求,也需要将该段中较多的数据予以缓存。例如,用户需要搜索50篇文档,如果缓存中有50篇文档,而由于文档更新速度快,其中I篇已被删除或者其中的信息已过期,因此,只能从缓存中返回49篇有效的文档给用户,这就降低了实时搜索的效率;如果缓存的文档数本文档来自技高网...

【技术保护点】
一种实时搜索的方法,该方法包括以下步骤:将数据文档按照时间顺序生成多段索引;从各索引段中提取部分数据,予以缓存,其中,根据各段的生成时间确定提取该段进行缓存的数据量;搜索数据时,先从缓存中搜索各索引段的文档,缓存中存在目标数据时,则返回目标数据;否则,从其他存储单元中搜索数据;将从缓存所搜索的目标数据和/或从存储单元中所搜索的目标数据予以合并,返回合并的数据。

【技术特征摘要】

【专利技术属性】
技术研发人员:龚伟坚孙海涛崔金峰
申请(专利权)人:北京城市网邻信息技术有限公司
类型:发明
国别省市:

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

1