实现搜索服务的方法与系统的制作方法

文档序号:6577947阅读:124来源:国知局
专利名称:实现搜索服务的方法与系统的制作方法
技术领域
本申请涉及计算机技术领域,特别地涉及一种实现搜索服务的方法与系统。
背景技术
随着信息技术的发展,各种应用场合中的信息量也在急速增加,为了帮助 人们从海量的信息中找到自身所需信息,目前出现了一些搜索服务,能够根据 用户提供的关键字或对搜索目标的描述信息,从数据源中进行全文搜索并将搜 索到的数据提供给用户。
在实现搜索服务时,需要将数据源中的数据转化为索引并保存起来,这个 过程通常称作索引的写入。索引是按一定规则整理的数据,因为用户在搜索时 通常给出文本格式的关键字,所以相应地索引也通常为文本格式,以实现按关 键字进行全文搜索,有些搜索引擎中,索引的内容包含在搜索引擎提供的网页 快照中。索引包含了有关数据源中的各种信息,对于数据源中的文本,索引可 以包含这些文本,对于数据源中的图像文件以及音频、视频等非文本格式的文 件,在索引中可以保存这些文件的来源的字段,例如它们在互联网上的地址字 段。索引的写入工作通常由索引服务器完成。当用户进行搜索时,由搜索服务 器接收用户给出的搜索条件,然后根据该搜索条件确定用户所需数据保存在哪 个索引中,再从该索引中进一步进行查找,查找到保存的索引之后将其中的信 息提供给用户。
为了将大量数据转化为索引,通常会使用多个索引服务器进行索引写入工 作。索引服务器按一定次序提取数据,例如按时间顺序提取邮件,或者按序号 提取数据库记录中的条目,在提取之后标记被提取数据为"已提取",在这种 情况下对于相同的数据,可能会被不同的索引服务器同时提取并写到不同的索引中从而造成索引写入的共享沖突。
另外,对于已经形成的索引,如果其容量较大,例如字节数超过1G,则 从索引中进一步查找所需内容的时间较长,从而降低了搜索效率。另一方面, 如果索引容量过小,则在搜索时需打开多个索引,也会降低搜索效率。
因此在目前的搜索服务中存在索引写入共享沖突以及搜索效率较低的问 题,需要新的方法来实现搜索服务。

发明内容
本申请的主要目的是提供一种实现搜索服务的方法与系统,以解决现有技 术中索引写入共享冲突以及搜索效率较低的问题。 为解决上述问题,本申请提供如下的技术方案 一种实现搜索服务的方法,包括
根据预设的数据分类方式划分数据源中的数据,在划分得到的每类数据与
预设的索引之间建立对应关系;
根据所述对应关系将每类数据写入该类数据对应的索引中; 当接收到搜索指令时,根据收到的搜索指令确定索引,根据确定的索引输
出数据。
所述按所述对应关系将数据写入该类数据对应的索引中包括 将所述一类数据分配到一个索引写入装置;
索引写入装置根据每类数据,按所述对应关系将数据写入该类数据对应的 索引中。
所述预设的索引中,单个索引的最大容量预先设定,并根据所述数据源的 容量和预先设定的单个索引的最大容量确定所述预设的索引的份数。 一种实现搜索服务的系统,包括
划分模块,用于根据预设的数据分类方式划分数据源中的数据,并保存划 分得到的每类数据与预设的索引之间的对应关系;索引写入才莫块,在所述系统中设有一个或多个,用于根据所述对应关系,
将每类数据写入该类数据对应的索引中; 索引存储模块,用于保存索引。 所述系统进一步包括
分配模块,用于按每一类数据分配到一个索引写入模块的规则将所述数据 分配到索引写入模块;
所述索引写入模块进一步用于根据每类数据,按所述对应关系将数据写入 该类数据对应的索引中。
所述系统进一步包括
源数据存储模块,用于保存数据源中的数据;
搜索模块,用于接收搜索指令,以及根据收到的搜索指令确定索引存储模 块中的索引,根据确定的索引输出数据。
根据本申请实施例的技术方案,通过将数据源中的数据划分并且使划分得 到的每类数据与索引相对应,在数据写入索引时按这种对应关系进行写入操 作,这样避免了索引写入的共享沖突问题,并且在获耳又某一类数据的信息时只 需从该类数据所对应的索引中进行查找,有较高的搜索效率。并且在本申请实 施例中,通过合适地选择索引的容量使索引的容量不至于太大或太小,能够避 免在过大的索引中进行查找而导致的效率低下,并且在获取某些涉及面较广的 数据时也避免了打开太多的容量较小的索引,这些都有助于提高搜索效率,从 而提高搜索服务的质量。


图1为应用本申请实施例技术方案的网络的结构示意图2为本申请实施例中的方法流程图3为本申请实施例中的装置结构示意图。
具体实施例方式
下面结合附图对本申请实施例的技术方案进行说明,附图作为理解本申请 技术方案的辅助方式,本申请的技术方案在各种实现中不限于附图的形式。
本申请实施例的技术方案可以应用到图1所示的网络结构中,如图1,用
户通过终端设备IO访问搜索服务器11,向搜索服务器发送搜索指令,搜索指
令中一般包含用户提出的关键字,该关键字指示了用户所需数据的一个范围或 者说一个特征,例如用户需要获取邮件服务器中他自己的所有邮件,则关键字
可以是他的邮件地址;又如用户需要获取商品信息,则关键字可以是商品的型 号。网络中可以存在多台终端设备IO,如图中所示。
搜索服务器11在收到搜索指令时,从搜索指令中分析得出关键字,根据 关键字确定索引。因为索引是按照规则整理的数据,该规则一般来说匹配于用 户的搜索行为,例如,对于邮件服务器保存的海量邮件,可以将邮件中的数据, 包括邮件的文本以及邮件中的其他格式的文件的链接地址写到预先设置的若 干个索引中,每个索引包含一个或几个邮件地址的邮件。并且记录每个邮件地 址的邮件中的数据被写到了哪个索引,于是当搜索服务器收到用于搜索邮件的 搜索指令时,该指令一般来说包含了用户的邮件地址,于是根据该邮件地址以 及上述的记录,即可确定该邮件地址被整理到的索引。
索引可以保存在索引存储装置12中,它与索引服务器13连接,索引服务 器13的任务是将数据存储装置14中的数据按一定的规则写入索引存储装置12 中。数据存储装置14中的数据量可能在不断地增长,例如网络侧保存的用户 邮件数量可能随时间的推移在不断地增加。在本实施例中,为了能够尽可能快 地向用户提供搜索结果,单个索引的容量被限制在一定的范围,既不能太大也 不能太小,这是因为如果单个索引的容量过大,从这种容量过大的索引中进一 步搜索数据就会耗时较长;如果单个索引的容量太小,则势必形成大量索引, 因为打开一份索引较为耗时,所以索引数量不宜太多。这样,可以给出单个索 引容量的上限,并且根据具体应用场景下的数据特点以及搜索服务器11的性能,从数据存储装置14中划出一部分数据作为索引存储装置12的数据源,该 数据源的容量则是一定的,将该容量除以给出的单个索引容量的上限再向上取 整,就得到了一个正整数,该正整数表明该数据源中的数据经过整理后得到的 容量接近于给出的单个索引容量上限的索引的份数。至于数据存储装置14中 的其他数据,则可以按照同样的方法确定这些数据整理得到的索引的份数。
在实现搜索服务时,可以按图2所示的流程进行,具体包括如下步骤
步骤21:划分数据源中的数据。
步骤22:在划分得到的每类数据与预设的索引之间建立对应关系。 步骤23:索引写入装置将数据写入索引。
完成步骤21 ~ 2 3之后就形成了索引,索引中包含了数据源中数据的信息。 此时可以按索引中的内容向用户提供信息。当接收到来自于用户的搜索指令 时,根据收到的搜索指令确定索引,根据确定的索引输出数据给用户。输出的 数据具体可以是数据源中的文本,也可以包括数据源中其他数据在互联网中的 地址,例如图象的地址以及音频或视频控件所链接的地址。
在步骤21中,划分数据源中的数据时,应当按照一定的规则进行,这个 规则可以从预设的数据分类方式中得到。这里的数据分类方式具体根据数据源 中数据本身的性质来确定。例如数据源中包含若干用户的邮件,那么就可以按 照邮件地址对数据分类,于是划分数据时就按邮件地址进行划分。
步骤22中的索引是预先设定的,具体需要设定单个索引的最大容量,然 后根据数据源的容量和单个索引的最大容量确定预设的索引的份数。 一方面, 索引越大,在该索引中查找数据所需时间越长;另一方面,在打开每一份索引 时需要的时间较长,因此要尽量减少索引的数目,这样每份索引就比较大。综 合上述两个方面,单个索引的最大容量可以根据系统的处理能力的配置来确 定。在一些实现中,单个索引的最大容量是1G字节。下面对建立步骤22中的 对应关系的方法作出说明。
设数据源中的数据总容量为T,若确定的单个索引的最大容量是M,则索引的份数是计算T+M然后向上取整。在确定了索引的份数之后,将这些索引 按正整数连续编号,可以将该编号保存在索引文件中或索引文件名中。对于步 骤21中划分得到的每类数据,分配唯一的整数值,即每类数据与其他类数据 分配到的整数值各不相同。为此,在本实施例中,利用与每类数据唯一对应的 字段来得到该唯一的整数值。与每类数据唯一对应的字段同样可以从数据的分 类方式中得到,例如邮件地址具有唯一性。以邮件地址为例,提取各个用户的 邮件,然后将各个用户的邮件地址的字段按同样的规则映射为数字,可以采用 字段中各字符的ASCII码进行映射,再使用哈希算法或其他散列算法对映射得 到的数字作进一步数值计算得到一个整数值。如果对当前的一类数据计算得到 的唯一的整数值为H,以及索引的份数为N,则用H。/。N进行计算得到一个数 值,将索引编号等于该数值的索引作为与当前的这类数据相对应的索引。H%N 表示用H除以N之后取余数。根据这样的算法,多类数据可以对应于一份索 引。这里对每类数据分配唯一整数值的方法仅为举例,也可以使用其他方式进 行,只要保it在建立数据与索引的对应关系时每一类数据仅对应于一份索引即 可。在建立了一类数据与一份索引的对应关系之后,记录该份索引具体对应了 哪些类数据,并且可以检查一下与该份索引对应的各类数据的数据总量是否超 出设定的单个索引最大容量,若超出则可以将该类数据中超出该份索引的部分 与下一份索引进行对应,同样可以对按索引编号进行的下一份索引进行同样的 检查。对于上述超出的部分数据,应当记录这些数据是对应了下一份索引。这 样,向用户提供某类数据时,至多从两份索引中进行查找,有助于提高查找速 度。在各种实现中,因为每次查找涉及的数据容量远小于单个索引容量,例如 在一份索引中保存了某部门所有人员的邮件索引,则每个人员的邮件索引大小 远小于该份索引大小,因此可以在写索引时作调整,将同一邮件地址的邮件数 据写到同一份索引中,使每人所有邮件的索引保存在同一份索引,这样每个人 员搜索自己邮件时只在一份索引中进行搜索。
在步骤23中,为了避免索引写入共享冲突,可以将每一类数据仅分同一个索引写入装置中,索引写入装置在写索引时,根据分配得到的数据进行 索引写入。这里的索引写入装置可以是具有写入功能的计算机,例如图1中的
索引服务器13。为了保证每一类数据仅分配到同一个索引写入装置中,可以使 用与步骤22中类似的方法,将索引写入装置按正整数连续编号,再针对每份 索引,将该索引的编号除以索引写入装置的数目然后取余数,将该份索引对应 的数据分配到编号为该余数的索引写入装置。也可以使用其他方式向索引写入 装置分配数据,但应保证每一类数据仅分配到同一个索引写入装置中。在索引 写入装置将数据写入索引时,可以先将数据从数据源中导出,将数据中的文本 以及其他格式的文件的链接地址保存在文本文件中,根据每类数据与索引的对 应关系,对应于同一索引的数据保存在同一文件中,并在该文件或文件名中记 录索引写入装置的标识以及该文件对应的索引标识。可以使用步骤22中对索 引进行的编号作为索引标识,以及使用步骤23中对索引写入装置进行的编号 作为索引写入装置的标识。这里的文件可以和数据源的数据存储在同 一 台存储 装置中。接下来将导出的数据文件列表记录到文件状态表中,文件状态表中记 录了每个文件的文件名以及该文件状态,文件状态表明文件中的数据已写入索 引或未写入索引,相应的文件状态具体信息可以是"已处理"和"未处理"。 文件名可以采用如下格式{数据前缀}_>007一《1111—dd_hh—MM—ss_k.txt。其中 数据前缀中可以添加关于数据的一些说明,后面的yyyy—mm_dd_hh—MM—ss—k 分别表示数据导出时的年份、月份、日期、小时、分钟和秒,k是索引写入装 置的编号。文件状态表可以在每一台索引写入装置中保存一份。索引写入装置 查询文件状态表,根据自身编号从保存上述文件的存储装置中读取相应的文 件,按文件或文件名中记录的索引标识将文件中的数据写到相应的索引中。索 引写入装置可以按时间次序读取文件。在将数据写入索引之后,可以在文件状 态表中记录该文件的状态为"已处理"。
基于本申请实施例中的方法,下面对本申请实施例中的装置作出说明。在 以下的叙述中对各功能模块进行说明,这些功能模块的总和构成了 一种实现搜索服务的系统。在实现中各个功能模块可以各自位于单独的装置中,也可以将 多个功能模块作为同 一装置的组成部分。本申请实施例中的方法可以使用软 件、硬件或二者相结合的形式实现,并且该软件可以保存在光盘、半导体存储 装置或其他类型的存储装置中。
如图3所示,搜索服务系统30用于实现搜索服务,它包括划分模块31、 索引写入模块32和索引存储模块33。其中索引写入模块32可以是一个或多个, 图中示出了多个的情形。划分模块31用于根据预设的数据分类方式划分数据 源中的数据,并按每一类数据仅对应于一份索引的规则保存划分得到的每类数 据与预设的索引之间的对应关系。索引写入模块32具有上文中所述的索引写 入装置的所有功能,具体是根据每类数据,按划分模块31保存的对应关系, 将每类数据写入该类数据对应的索引中。索引存储模块33用于保存索引。
搜索服务系统30中还可以包括分配模块,用于按每一类数据仅分配到一 个索引写入模块的规则将数据分配到索引写入装置,这样,索引写入模块32 可以进一步用于根据每类数据,按划分模块31保存的对应关系将数据写入该 类数据对应的索引中。另外搜索服务系统30中还可以包括源数据存储模块, 用于保存数据源中的数据。并且搜索服务系统30还可以包括搜索模块,用于 接收搜索指令,以及根据收到的搜索指令确定索引存储模块33中的索引,根 据确定的索引输出数据。该搜索指令一般来自于用户操作的终端设备。
划分^f莫块31的一种结构可以是包括索引份数确定单元、索引编号单元、 划分单元、特征值分配单元以及索引对应单元。索引份数确定单元用于根据数 据源的容量和预先设定的单个索引的容量确定预设的索引的份数。索引编号单 元用于将预设的索引按正整数连续编号。划分单元用于根据预设的数据分类方 式划分数据源中的数据。特征值分配单元用于针对划分单元划分得到的每类数 据,向该类数据分配唯一的整数值。索引对应单元用于针对划分单元划分得到 的每类数据,将该类数据分配得到的整数值除以预设的索引的份数然后取余 数,在该类数据与编号为所述余数的索51之间建立对应关系。如果划分模块31采用了上述的结构,那么分配模块的结构可以是包括装 置编号单元和数据分配单元,其中装置编号单元用于将索引写入模块按正整数 连续编号。数据分配单元用于针对每份索引,将该索引的编号除以索引写入模 块32的数目然后取余数,将该份索引对应的数据分配到编号为该余数的索引 写入模块32。
划分模块31中的索引对应单元可以进一步用于记录每类数据对应的索引 的编号。这样,数据分配单元的一种结构可以是包括索引确定子单元和写入子 单元,其中索引确定子单元用于根据索引对应单元记录的每类数据对应的索引 的编号确定分配得到的每类数据对应的索引,写入子单元用于根据分配得到的 每类数据,将数据写入索引确定子单元确定的索引中。
根据本申请实施例的技术方案,通过将数据源中的数据划分并且使划分得 到的每类数据与索引相对应,而且在数据写入索引时按这种对应关系进行写入 操作,这样避免了索引写入的共享冲突问题,并且在获取某一类数据的信息时 只需从该类数据所对应的索引中进行查找,有较高的搜索效率。并且在本申请 实施例中,通过合适地选择索引的容量使索引的容量不至于太大或太小,能够 避免在过大的索引中进行查找而导致的效率低下,并且在获取某些涉及面较广 的数据时也避免了打开太多的容量较小的索引,这些都有助于提高搜索效率, 从而提高搜索服务的质量。
为了描述的方便,以上所述装置的各部分以功能分为各种模块或单元分别 描述。当然,在实施本发明时可以把各模块或单元的功能在同一个或多个软件 或硬件中实现。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申 请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及 其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
权利要求
1、一种实现搜索服务的方法,其特征在于,包括根据预设的数据分类方式划分数据源中的数据,在划分得到的每类数据与预设的索引之间建立对应关系;根据每类数据,按所述对应关系将数据写入该类数据对应的索引中;当接收到搜索指令时,根据收到的搜索指令确定索引,根据确定的索引输出数据。
2、 根据权利要求1所述的方法,其特征在于,所述按所述对应关系将数 据写入该类数据对应的索引中包括将所述每一类数据分配到一个索引写入装置;索引写入装置才艮据每类数据,按所述对应关系将数据写入该类数据对应的 索引中。
3、 根据权利要求1或2所述的方法,其特征在于,所述预设的索引中, 单个索引的最大容量预先设定,并根据所述数据源的容量和预先设定的单个索 引的最大容量确定所述预设的索引的份数。
4、 根据权利要求3所述的方法,其特征在于,所迷在划分得到的每类数 据与预设的索引之间建立对应关系包括步骤将所述预设的索? 1按正整数连续编号;针对划分得到的每类数据,向该类数据分配唯一的整数值,将该整数值除 以所述预设的索引的份数然后取余数,在该类数据与编号为所述余数的索引之 间建立对应关系。
5、 根据权利要求4所述的方法,其特征在于,所述将所述数据分配到索 引写入装置包括步骤将所述索引写入装置按正整数连续编号;针对每份索引,将该索引的编号除以所述索引写入装置的数目然后取余 数,将该份索引对应的数据分配到编号为该余数的索引写入装置。
6、 根据权利要求5所述的方法,其特征在于,所述将该份索引对应的数 据分配到编号为该余数的索引写入装置之后进一步包括在所述该份索? 1对应的数据中添加该份索引的编号;从每类数据中获取索引的编号;根据获取的编号确定索引;根据每类数据,将数据写入所确定的索引中。
7、 一种实现搜索服务的系统,其特征在于,包括划分模块,用于根据预设的数据分类方式划分数据源中的数据,并保存划 分得到的每类数据与预设的索引之间的对应关系;索引写入模块,在所述系统中设有一个或多个,用于根据每类数据,按所 述对应关系将数据写入该类数据对应的索引中;索引存储模块,用于保存索引。
8、 根据权利要求7所述的系统,其特征在于,进一步包括分配模块,用 于按每一类数据分配到 一个索引写入模块的规则将所述数据分配到索引写入 模块;所述索引写入模块进一步用于根据每类数据,按所述对应关系将数据写入 该类数据对应的索引中。
9、 根据权利要求7或8所述的系统,其特征在于,进一步包括 源数据存储模块,用于保存数据源中的数据;搜索模块,用于接收搜索指令,以及根据收到的搜索指令确定索引存储模 块中的索引,根据确定的索引输出数据。
10、 根据权利要求7或8所述的系统,其特征在于,所述划分模块包括 索引份数确定单元,用于根据所述数据源的容量和预先设定的单个索引的容量确定所述预设的索引的份数;索《I编号单元,用于将所述预设的索?I按正整数连续编号; 划分单元,用于才艮据预设的数据分类方式划分数据源中的数据;特征值分配单元,用于针对划分单元划分得到的每类数据,向该类数据分配唯一的整数值;索引对应单元,用于针对划分单元划分得到的每类数据,将该类数据分配 得到的整数值除以所述预设的索引的份数然后取余数,在该类数据与编号为所 述余数的索? 1之间建立对应关系。
11、 根据权利要求IO所述的系统,其特征在于,所述分配模块包括 装置编号单元,用于将所述索引写入模块按正整数连续编号; 数据分配单元,用于针对每份索引,将该索引的编号除以所述索引写入模块的数目然后取余数,将该份索引对应的数据分配到编号为该余数的索引写入 模块。
12、 根据权利要求11所述的系统,其特征在于,所述索引对应单元进一 步用于记录每类数据对应的索引的编号;所述数据分配单元包括索引确定子单元,用于根据索引对应单元记录的每类数据对应的索引的编 号确定分配得到的每类数据对应的索引;写入子单元,用于4艮据分配得到的每类数据,将数据写入索引确定子单元 确定的索引中。
全文摘要
本申请提供一种实现搜索服务的方法与系统,以解决现有技术中索引写入共享冲突以及搜索效率较低的问题。在实施例中根据预设的数据分类方式划分数据源中的数据,在划分得到的每类数据与预设的索引之间建立对应关系;根据每类数据,按所述对应关系将数据写入该类数据对应的索引中;当接收到搜索指令时,根据收到的搜索指令确定索引,根据确定的索引输出数据。根据本申请实施例的技术方案,能够避免索引写入的共享冲突问题并能获得较高的搜索效率。
文档编号G06F17/30GK101546342SQ20091013644
公开日2009年9月30日 申请日期2009年5月8日 优先权日2009年5月8日
发明者杨含飞 申请人:阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1