一种数据搜索的方法和系统的制作方法

文档序号:6554214阅读:236来源:国知局
专利名称:一种数据搜索的方法和系统的制作方法
技术领域
本发明涉及数据搜索领域,特别是涉及一种通过改进索引文件的生成方法而提高搜索速度的数据搜索的方法、以及搜索引擎系统。
背景技术
随着INTERNET的迅速发展,电子信息不断地壮大和丰富起来,然而这些信息却是散布在无数个结点的服务器上,对于普通用户来说,如何能迅速准确的找到自己需要的信息,是迫切需要解决的一项重要问题。搜索引擎就为用户和信息源之间架起了沟通的桥梁。
搜索引擎(SEARCH ENGINE)就是利用自动抓取程序,例如WEBCRAWLERS,SPIDER,ROBOT,在广域网(INTERNET)或局域网(INTRANET)上遍历各个结点,使用全文检索技术对在各结点上抓取的信息进行分析,并进行索引、分类、建立相应的数据库,保存以备用户查询的一项信息技术。其基本原理是从一组已知的文档出发,通过这个文档的概要和超链连接确定新的信息点,然后由搜索引擎的遍历程序周游这些信息点,对这些信息点上的文档进行索引、分类、并组织到索引数据库中去。从逻辑上讲通过这种递归遍历最终可以把所有信息加入索引库中。当用户使用搜索引擎的时候,输入关键字,检索程序就在索引数据库中读取信息与用户关键字进行匹配,检索出相应或相关的信息通过一定的组织方式把它输出给用户。
搜索引擎一般以全文检索为基础,全文检索一般以B树作为数据结构,而信息以什么样的方式存储在数据结构中,并且能有效的减少搜索时间,是各种搜索引擎都要考虑的问题。目前的搜索引擎中较多的采用B树的数据结构(如图1)来存储索引信息,每个索引节点存储每个“词”的信息,并连接到含有该“词”的文档的地址信息id上,含有该“词”的文档id按照词出现的词频排序以单向链表或者双向链表的形式连接到索引节点上。所述“词”是指在搜索引擎中,能表达信息的最小单元。
图1示出了搜索引擎对一些文档建立完索引后的结构图,所有文档的所有信息都保存在一个B树中,B树上的每一个节点就是一个词,其中词“我”指向了另外一个链表,链表保存了含有“我”的所有的文档以及该文档中“我”出现的次数,在本图中含有词“我”的有文档10298,文档786;词“中国”指向了另外一个链表,链表保存了含有“中国”的所有的文档以及该文档中“中国”出现的次数,在本图中含有词“中国”的有文档10298,文档786;所述出现的次数采用词频表示,文档786中“我”出现的次数为4次,文档786中“中国”出现的次数为1次。
采用上述方法生成的索引文件进行搜索时,尤其在高级检索中,例如在含有与或非等运算的检索中,将对应的文档id列表进行与或非操作的时候,会严重影响搜索的速度。例如在上面的索引文件方式下,用户需要搜索既含有“我”,又含有“中国”的文档,输入关键字,则可以很快的检索到含有“我”的文档为10298和文档786,含有“中国”的有文档786和文档26543,那么同时含有“我”和“中国”的文档为(10298,786)和(786,26543)的交集,计算该交集的过程会严重影响搜索的速度。

发明内容
鉴于上述问题,本发明需要解决的技术问题是提供一种索引文件的生成方法,可以提高在进行高级检索时的搜索速度。
本发明的另一个目的在于提供一种基于上述生成的索引文件进行数据搜索的方法,以及一种搜索引擎系统,可以提高在进行高级检索时的搜索速度。
为解决上述技术问题,本发明的目的是通过以下技术方案实现的本发明提供了一种搜索数据的方法,包括以下步骤针对需要检索的全部信息生成第一索引文件;针对每个信息生成独立的第二索引文件;根据输入的查询条件,获取相关信息。
优选的,所述的搜索数据的方法,当进行高级检索时,还可以包括以下步骤分解输入的查询条件;在第一索引文件中检索第一个子条件,获取满足第一个子条件的信息的标识;根据第二个子条件,在满足第一个子条件的信息所对应的第二索引文件中进行检索,获取相关信息。
优选的,在所述的搜索数据的方法中,如果满足第一个子条件的信息大于一个时,可以采用多任务分别在所述信息对应的第二索引文件中进行检索。
优选的,所述的搜索数据的方法,还可以包括如果存在下一个子条件,则根据下一个子条件,在满足上一个子条件的信息所对应的第二索引文件中进行检索。
优选的,所述第二索引文件的生成方法可以采用以下步骤A、判断一个信息是否含有下一个单词,如果没有则结束该第二索引文件的生成步骤,如果含有,则;B、判断在该第二索引文件的B树中是否存在该词对应的节点,如果存在,则执行步骤C,如果不存在,则执行步骤F;C、判断该词指向的链表中是否存在该信息的标识,如果存在,则执行步骤D,如果不存在,则执行步骤E;D、将该词指向的链表中该信息所对应的词频加1;E、在该词指向的链表中增加该信息的标识,并将其对应的词频设为1;F、在该第二索引文件的B树中增加对应该词的节点,并在链表中增加该信息的标识,置词频为1。
优选的,所述的第一索引文件或第二索引文件可以采用B树作为数据结构。
优选的,所述的搜索数据的方法,还可以根据查询条件在信息中出现的次数对检索结果进行排序并输出该结果,获取较佳的客户反馈。
本发明还公开了一种搜索引擎,包括以下部件搜索模块,用于获取信息;索引模块,针对搜索模块获取的信息生成第一索引文件;针对每个信息生成独立的第二索引文件;查询模块,根据输入的查询条件进行查询,并输出查询结果;接口单元,用于输入查询条件以及显示查询结果。
优选的,所述查询模块还可以分解输入的查询条件;在第一索引文件中检索第一个子条件,获取满足第一个子条件的信息的标识;根据第二个子条件,在满足第一个子条件的信息所对应的第二索引文件中进行检索。
与现有技术相比,可以看出本发明的技术方案具有以下优点由于本发明除了采用针对所有的信息建立一个索引文件外,同时将每个文档的信息都单独生成独立的索引,在进行高级检索时,更容易采用多任务协同查询,所以能够提高单个或并发查询的速度。
现有的技术需要解决在操作系统物理磁盘寻址有限的情况下,超大索引文件的存储和访问问题。而本发明减少了这方面的操作,并将每个文档的信息都单独生成独立的索引,故可以减少这方面带来的内存和时间的消耗,提高搜索的速度。
现有技术进行二次检索或者高级检索的时候,每次都加载大索引文件到内存,而本发明则只需要加载一次大索引文件,即第一索引文件,然后调用针对单个文档的独立的索引文件,该索引文件数据量较小,故可以节省物理开销。并且,由于针对单个文档的独立的索引文件的信息量较少,所以搜索的时间就可以很快,而不用进行需要耗费时间较长的计算信息交集的过程,故可以提高高级检索时的搜索速度。


图1是现有技术生成的索引文件的结构图;
图2是本发明对需要搜索的所有信息生成第一索引文件的步骤流程图;图3是本发明针对单个文档生成独立的索引文件的步骤流程图;图4是本发明针对单个文档生成的独立的索引文件的结构图;图5是本发明一种数据检索方法的步骤流程图。
具体实施例方式
本发明的核心思想在于本发明除了针对所有的信息建立一个索引文件外,同时将每个文档的信息都单独生成独立的索引,故可以采用多任务协同查询、可以节省物理消耗并提高检索的速度。
参照图2,是本发明对需要搜索的所有信息生成第一索引文件的步骤流程图。
本发明所述的需要检索的信息一般包括散布在无数个结点的服务器上的电子信息,实际中具有很多的存储格式,例如文档、网页或者数据库记录等信息存储方式。本发明就以网页为需要检索的信息的存储形式进行说明,但本发明并不仅限于此种形式的信息。
由于需要重复对每个网页进行分析,从而将每个网页含有的词的情况都记录在第一索引文件中,形成一个数据量较大的B树,所以一般也可以称之为大索引文件。
索引文件需要采用一定的数据结构对索引信息进行存储,例如,一般的全文检索都采用B树。数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。数据结构是数据存在的形式,一般可以反映成分数据之间的逻辑关系。数据结构是信息的一种组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。一般的全文检索采用B树的数据结构就是为了获得较高的检索速度。当然,本发明并不限定索引文件的数据结构,其他任何可行的数据结构都是可行的,例如二分查找树BST树、平衡树AVL树、堆等数据结构。
为了清楚描述针对需要检索的网页生成索引文件的过程,图2以B树结构为例,示出了一种生成索引文件的步骤流程。下面对此进行详述(1)判断一个网页是否含有下一个单词,如果没有则结束针对该网页的分析,如果含有,则执行步骤(2);(2)判断在第一索引文件的B树中是否存在该词对应的节点,如果存在,则执行步骤(3),如果不存在,则执行步骤(6);(3)判断该词指向的链表中是否存在该网页的标识(ID),如果存在,则执行步骤(4),如果不存在,则执行步骤(5);(4)将该词指向的链表中该网页所对应的词频加1;(5)在该词指向的链表中增加该网页的标识,并将其对应的词频设为1;(6)在该第一索引文件的B树中增加对应该词的节点,并在链表中增加该网页的标识,置词频为1。
(7)循环上述步骤,直到所有需要检索的网页都经过分析后停止循环,所有网页的索引信息都存储在第一索引文件中。
上面给出了一种生成第一索引文件的方法,当然,采用其他本领域技术人员熟知的方法也可以实现,本发明并不对此加以限定。而且,所述索引文件可以采用不同的数据结构,则也就会具有不同的生成步骤,由于属于本领域已知技术,在此不再赘述。
完成图2所示的步骤后,就将需要检索的所有网页的所有信息都存储在如图1所示的一个B树上面了,B树上的每一个节点就是一个词,例如词“我”指向了另外一个链表,链表保存了含有“我”的所有的网页以及该网页中“我”出现的次数。
现有技术中生成了大索引文件,就可以根据输入的关键字进行检索了,但是为了提高在高级检索时的速度,本发明所述索引文件的生成方法在生成第一索引文件之后,还包括步骤S2针对每个网页生成独立的第二索引文件。所述第二索引文件是相互独立,每个网页对应一个自己的第二索引文件,一个第二索引文件就是对相应的网页中含有的单词以及该词出现的次数进行描述和记录。如果仍然采用B树结构,则一个第二索引文件就是一个B树,并和第一索引文件通过对应的网页的标识关联起来。
参照图3,就是以B树为例,示出了针对每个网页生成独立的第二索引文件的步骤流程。
(1)判断一个网页是否含有下一个单词,如果没有则结束针对该网页的第二索引文件的生成步骤,如果含有,则执行步骤(2);(2)判断在该第二索引文件的B树中是否存在该词对应的节点,如果存在,则执行步骤(3),如果不存在,则执行步骤(6);(3)判断该词指向的链表中是否存在该网页的标识(ID),如果存在,则执行步骤(4),如果不存在,则执行步骤(5);(4)将该词指向的链表中该网页所对应的词频加1;(5)在该词指向的链表中增加该网页的标识,并将其对应的词频设为1;(6)在该第二索引文件的B树中增加对应该词的节点,并在链表中增加该网页的标识,置词频为1。
针对一个网页完成上述的生成步骤后,就形成了图4所示的索引信息存储结构图,图4是本发明针对单个网页生成的独立的第二索引文件的结构图。
本发明所述的第一索引文件或者第二索引文件,优选的,可以采用B树作为数据结构,当然也可以采用其他本领域技术人员熟知的数据结构作为索引文件的数据存储形式,本发明对此并不加以限定。上面给出了生成第一和第二索引文件的步骤,是为了说明本发明的可实现性。本发明的一个核心点在于,在生成大索引文件的基础上,针对每个网页还生成自己独立的第二索引文件,从而可以更加容易的采用多任务(多进程)同时对多个索引文件进行查询,并避免了多次调用数据量巨大的第一索引文件,所以可以提高数据检索的速度,尤其当进行高级检索时。所述高级检索一般适用于对网页进行较细致精确的检索,检索条件可以包括单一条件或者综合条件。综合条件一般是多个子条件的组合,其中每个子条件都是一个单一条件,子条件之间可以通过“与”、“或”、“非”来连接。
参照图5,本发明提供了一种基于上述生成索引文件的方法进行数据检索的方法,包括以下步骤针对需要检索的全部信息生成第一索引文件;针对每个信息生成独立的第二索引文件;根据输入的关键字,获取相关信息。
当进行一般检索时,根据输入的查询条件,检索第一索引文件得到需要的相关信息即可,还可以包括根据关键字在文档中出现的次数对检索结果进行排序并输出该结果。
当进行高级检索时,还可以包括分解输入的查询条件;在第一索引文件中检索第一个子条件,获取满足第一个子条件的信息的标识;根据第二个子条件,在满足第一个条件的信息所对应的第二索引文件中进行检索。如果满足第一个子条件的信息大于一个时,采用多任务分别在所述信息对应的第二索引文件中进行检索。
例如完成图3所示的索引文件的生成步骤后,得到了图4所示的B树,则在进行高级检索的时候,可以先将输入的查询条件分解成多个子条件,在大索引文件(第一索引文件)中检索第一个子条件,得到满足第一个子条件的所有文档的标识(ID),此时,依次或者同时在文档标识对应的小索引文件(第二索引文件)中进行针对第二个子条件的检索,依此类推。如果存在下一个子条件,则根据下一个子条件,在满足上一个子条件的文档所对应的第二索引文件中进行检索,从而得到较为精确的查询结果。优选的,所述的第一索引文件或第二索引文件可以采用B树作为数据结构。
对第二索引文件进行检索时,可以依次对满足上一个子条件的文档对应的第二索引文件进行检索,也可以采用多任务同时进行检索。现有的搜索方法由于只存在一个索引文件,所以当针对两个或两个以上的子条件进行检索的时候,只能对子条件进行排队,依次调用该索引文件,并且需要计算满足每个子条件的信息集合的交集,才能得到满足综合查询条件的结果,多次调用数据量巨大的第一索引文件以及计算信息集合的交集导致搜索速度较慢。由于本发明改变了现有技术仅具有一个索引文件的情况,提供了多个第二索引文件,可以很容易的采用多进程进行检索,故可以加快检索速度。这样,每次加载的索引文件较小,不需要每次都加载数据量大的第一索引文件,不用占用太大的内存,并且省略了对各个条件检索到的文挡ID进行合并取交集的过程,故可以大大节约检索时间,提高检索速度。
比如在搜索同时含有“我”和“中国”的文档时,搜索引擎先在大索引文件中找到含有“我”的所有文档,即文档10298,786,然后起2个任务(多进程或多线程)分别在文档10298和文档786的索引文件中搜索“中国”的关键字,对于单个文档10298等等来说,索引信息比较少,搜索的时间就很少,可以很快确定文档10298中不合有“中国”一词,文档786中含有“中国”,所以同时含有“我”和“中国”的文档为786。
所述检索数据的方法还可以包括根据关键字在文档中出现的次数对检索结果进行排序并输出该结果。为了更好的满足用户数据检索的需要,仅仅输出符合查询条件的文档还是不够的,还需要对文档和关键字进行相关度评价,并对将要输出的结果进行排序,实现较好的用户反馈机制。建立一个以词为单位的倒排文件,用检索词不断进行匹配,根据用户查询的关键词在文档中出现的频率和概率,确定出文章的查询的相关度,对包含这类检索词的文章进行排序,输出检索结果。
本发明还提供了一种搜索引擎,可以包括以下单元搜索模块,用于获取信息。搜索模块可以通过程序的相应代码实现在网上发现和搜集信息,并根据网页链接进行抓取分析加入到数据库中,实现电子信息的获取。
索引模块,针对搜索模块获取的信息生成第一索引文件;针对每个信息生成独立的第二索引文件。索引模块主要用于理解搜索模块所搜集到的信息并从中抽取出索引项生成相应的描述和表达信息来表示文档,建立文档的索引表,形成统一的物理索引数据库,从而可以实现非结构化信息的结构化。一般来说,一个搜索引擎的质量的高低主要取决于索引的科学性和有效性,索引文件的质量越高检索质量和速度也同样会越高,那么这个引擎的性能就越好。本发明正是对索引模块的改进,在生成一个索引文件的基础上,针对单个文档生成独立的第二索引文件,可以减少调用第一索引文件的次数以及可以采用多任务进行检索,从而提高了检索的速度。
查询模块,根据输入的关键字进行查询,并输出查询结果。查询模块根据用户的查询在索引文件中迅速检出文档,进行文档与关键字的相关度评价,并对将要输出的结果进行排序,实现较好的用户反馈机制。查询模块通过扫描文档中每一个词,建立一个以词为单位的倒排文件,用检索词不断进行匹配,根据用户查询的关键词在文档中出现的频率和概率,确定出文章的查询的相关度,对包含这类检索词的文章进行排序,输出检索结果。
接口单元,用于输入关键字以及显示查询结果。
优选的,所述查询模块还可以分解输入的查询条件;在第一索引文件中检索第一个子条件,获取满足第一个子条件的信息的标识;根据第二个子条件,在满足第一个子条件的信息所对应的第二索引文件中进行检索。
以上对本发明所提供的一种数据搜索的方法和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种搜索数据的方法,其特征在于,包括针对需要检索的全部信息生成第一索引文件;针对每个信息生成独立的第二索引文件;根据输入的查询条件,获取相关信息。
2.如权利要求1所述的搜索数据的方法,其特征在于,当进行高级检索时,还包括分解输入的查询条件;在第一索引文件中检索第一个子条件,获取满足第一个子条件的信息的标识;根据第二个子条件,在满足第一个子条件的信息所对应的第二索引文件中进行检索。
3.如权利要求2所述的搜索数据的方法,其特征在于,如果满足第一个子条件的信息大于一个时,采用多任务分别在所述信息对应的第二索引文件中进行检索。
4.如权利要求2所述的搜索数据的方法,其特征在于,还包括如果存在下一个子条件,则根据下一个子条件,在满足上一个子条件的信息所对应的第二索引文件中进行检索。
5.如权利要求1所述的索引文件的生成方法,其特征在于,所述第二索引文件的生成步骤包括A、判断一个信息是否含有下一个单词,如果没有则结束该第二索引文件的生成步骤,如果含有,则;B、判断在该第二索引文件的B树中是否存在该词对应的节点,如果存在,则执行步骤C,如果不存在,则执行步骤F;C、判断该词指向的链表中是否存在该信息的标识,如果存在,则执行步骤D,如果不存在,则执行步骤E;D、将该词指向的链表中该信息所对应的词频加1;E、在该词指向的链表中增加该信息的标识,并将其对应的词频设为1;F、在该第二索引文件的B树中增加对应该词的节点,并在链表中增加该信息的标识,置词频为1。
6.如权利要求1、2、3或4中所述的搜索数据的方法,其特征在于,所述的第一索引文件或第二索引文件采用B树作为数据结构。
7.如权利要求6所述的搜索数据的方法,其特征在于,还包括根据查询条件在信息中出现的次数对检索结果进行排序并输出该结果。
8.一种搜索引擎,其特征在于,包括搜索模块,用于获取信息;索引模块,针对搜索模块获取的信息生成第一索引文件;针对每个信息生成独立的第二索引文件;查询模块,根据输入的查询条件进行查询,并输出查询结果;接口单元,用于输入查询条件以及显示查询结果。
9.如权利要求8所述的搜索引擎,其特征在于,所述查询模块还包括分解输入的查询条件;在第一索引文件中检索第一个子条件,获取满足第一个子条件的信息的标识;根据第二个子条件,在满足第一个子条件的信息所对应的第二索引文件中进行检索。
全文摘要
本发明提供了一种搜索数据的方法,包括针对需要检索的全部信息生成第一索引文件;针对每个信息生成独立的第二索引文件;根据输入的关键字,获取相关信息。当进行高级检索时,还包括分解输入的查询条件;在第一索引文件中检索第一个子条件,获取满足第一个子条件的信息的标识;根据第二个子条件,在满足第一个子条件的信息所对应的第二索引文件中进行检索。本发明拥有多个第二索引文件,所以更容易采用多任务协同查询,提高查询的速度;并且调用的第二索引文件数据量较小,故可以节省物理开销、不用进行需要耗费时间较长的计算信息交集的过程,可以提高高级检索时的搜索速度。
文档编号G06F17/30GK1858737SQ200610002759
公开日2006年11月8日 申请日期2006年1月25日 优先权日2006年1月25日
发明者朱鹏喜 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1