一种搜索引擎索引构建方法及装置与流程

文档序号:11250884阅读:434来源:国知局
一种搜索引擎索引构建方法及装置与流程
本申请涉及搜索
技术领域
,尤其涉及一种搜索引擎索引构建方法及装置。
背景技术
:本地搜索,是指在pc、手机等设备上,针对设备本地存储内容所进行的搜索。随着用户需求的提升,本地搜索的功能也不仅限于查找具有特定名称的文档,而是可以针对文档内部的内容进行搜索,例如查找包含特定字符的word文件、pdf文件、短信、邮件等等。与对网页内容进行搜索的原理类似,为了实现对本地文档内容的快速搜索,需要针对文档中出现的内容建立索引信息,而现有的本地搜索引擎一般也都是按照在线搜索引擎的方式构建索引。然而在实际应用中,本地搜索引擎与在线搜索引擎的运行环境并不完全相同,这也导致了直接利用“在线”方式构造本地索引所存在的一些问题:首先,在线搜索引擎依托于网络侧服务器的性能,可以在搜索时一次性处理大量的索引数据,而对于用户设备而言,一次性处理的数据量远低于网络服务器,因此当索引文件体积过大时,需要将拆分为多个索引文件进行存储,每次搜索都需要遍历所有的索引文件,从而影响搜索效率。而且,除了影响性能之外,由于存储空间受限,用户设备(特别是手机、平板电脑等移动用户设备)对索引文件的也体积更为敏感,如果完全按照“在线”的方式构建本地索引,会导致索引文件体积迅速增加,从而影响设备上其他功能的使用。技术实现要素:针对上述技术问题,本申请提供一种搜索引擎索引构建方法及装置,技术方案如下:根据本申请的第一方面,提供一种搜索引擎索引构建方法,应用于用户设备,该方法包括:对文档中的文本串进行切分处理,得到对应的文本子串;根据预设的特征提取规则,确定每个文本子串的特征;针对任意文本子串,将其索引信息写入以其特征作为标识的索引文件中,其中,每种特征至少对应一个索引文件。根据本申请的第二方面,提供一种基于如前述搜索引擎索引的搜索方法,其特征在于,该方法包括:根据所述特征提取规则,确定搜索文本串的特征;在以所述搜索文本串的特征为标识的索引文件中,查找所述搜索文本串的索引信息;根据索引信息查找结果生成搜索结果。根据本申请的第三方面,提供一种搜索引擎索引构建装置,应用于用户设备,该装置包括:切分模块,用于对文档中的文本串进行切分处理,得到对应的文本子串;特征确定模块,用于根据预设的特征提取规则,确定每个文本子串的特征;索引信息写入模块,用于针对任意文本子串,将其索引信息写入以其特征作为标识的索引文件中,其中,每种特征至少对应一个索引文件。根据本申请的第四方面,提供一种基于前述搜索引擎索引的搜索装置,该装置包括:特征确定模块,用于根据所述特征提取规则,确定搜索文本串的特征;索引信息查找模块,用于在以所述搜索文本串的特征为标识的索引文件中,查找所述搜索文本串的索引信息;搜索结果生成模块,用于根据索引信息查找结果生成搜索结果。根据本申请的第五方面,提供一种搜索系统,该系统包括前述的索引构建装置及搜索装置。本申请所提供的技术方案,针对本地搜索的实际应用场景,根据待索引文本子串的特征对索引文件进行拆分存储,并以相应的特征对不同的索引文件进行标识。进而在搜索时,可以跟据搜索文本串的特征,直接定位到与该特征对应的索引文件,避免遍历所有的索引文件,有效地提高了搜索效率。此外,本申请还提供索引词条的切分方法,从而在不影响索引内容全面性的前提下,进一步降低索引文件的体积。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。此外,本申请中的任一实施例并不需要达到上述的全部效果。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。图1是本申请的搜索引擎索引构建方法的流程示意图;图2是本申请的搜索方法的流程示意图;图3是本申请的搜索引擎索引构建装置的第一种结构示意图;图4是本申请的搜索引擎索引构建装置的第二种结构示意图;图5是本申请的搜索装置结构示意图;图6是本申请的搜索系统的结构示意图。具体实施方式为了使本领域技术人员更好地理解本申请中的技术方案,下面将结合本申 请实施例中的附图,对本申请实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请保护的范围。首先对搜索引擎索引的基本原理进行简单介绍:当用户输入搜索关键词后,搜索引擎需要做的是:找到包含该关键词(或者包含与该关键词相关信息)的文档,生成搜索结果反馈给用户。这里的“文档”是对搜索对象的统称,在不同的搜索应用场景中,文档所对应的实体可能也各不相同。例如,对于一般的网页搜索而言,“文档”特指网页,而实际的“文档”概念则更为宽泛,例如word文件、pdf文件、邮件、短信、甚至图片文件、视频文件等都可以称为文档。最直接的搜索方法,是针对用户输入的关键词,采用遍历的方式在所有已知文档中查找是否包含该关键词。但是当文档数量很大时,这种方法的搜索效率在实际应用中是难以接受的,因此需要采用索引的方法提高效率。索引的基本思路是:预先对所有已知文档的内容进行分析,针对在这些文档中出现过的每种文本串(具体可以是一个字、一个词、一个短语等等),分别记录有哪些文档中包含该文本串,并将这些信息写入索引文件,一种基本的索引文件内容示意如表1所示:1文本串1文档2,文档32文本串2文档2,文档43文本串3文档1,文档3,文档54文本串4文档3,文档6………………表1以表1中第1行的索引信息为例,其表示在文档2、文档3中均包含“文本串1”,这样,当用户以“文本串1”作为关键词进行搜索时,搜索引擎根据索 引文件中“文本串1”的索引信息,就可以直接将“文档2和文档3”作为搜索结果反馈给用户,避免在所有文档中遍历查找“文本串1”。当文本串的种类很多时,必然导致索引文件的体积增加,对于本地搜索的应用场景而言,由于用户设备的性能远低于网络侧服务器,无法一次性处理体积过大的索引文件,因此一般本地搜索引擎都会对体积较大的索引文件进行拆分,但是根据现有技术的方案,只是简单地根据索引文件的体积需求对索引文件进行拆分,拆分后的多个索引文件之间彼此并没有关联,这样所带来的问题是:对于用户输入的搜索文本串,搜索引擎并不知道该文本串的索引信息存储在哪个索引文件中,因此需要按照一定的顺序(例如按照文件名、文件最后修改时间、文件摘要等)先读取一个索引文件,然后在该索引文件中查找该文本串的索引信息,如果没有命中就读取另一个索引文件进行下一轮查找,……如此反复,直到命中该文本串为止。可见,对于存在m个索引文件的情况,最坏的情况是直到第m轮才查找命中,另外,如果在索引文件中并不存在搜索文本串所对应的索引信息,则必须要查找m轮才能给出搜索失败的结果。针对上述问题,本申请提供一种搜索引擎索引构建方法,参见图1所示,该方法可以包括以下步骤:s101,对文档中的文本串进行切分处理,得到对应的文本子串;为了对文档建立索引信息,首先需要将文档内容拆分成若干个适用于索引的单元,在中文语言处理中,自然的切分标识主要是标点符号,此外也有少量文本是以空格等其他形式作为切分标识。这里将根据自然切分标识已经切分好的部分称为文本串,则本步骤实际需要根据特定的切分算法,将这些自然切分的文本串切分为若干文本子串。在本步骤中,可以选用任意的切分算法,本申请所提供的基本方案也并不受具体切分算法的影响。s102,根据预设的特征提取规则,确定每个文本子串的特征;在本步骤中,对于切分得到的文本子串,根据某种特征提取规则,分别确定每个文本子串的特征,目的是在后续步骤中,以文本子串的特征作为区分, 对具有不同特征的文本子串分别进行存储。文本子串的特征提取可以有很多种方式,例如:以文本子串首字的汉语拼音作为该文本子串的特征、以文本子串首字的汉字笔画作为该文本子串的特征、等等,甚至可以利用某种特定算法计算得到文本子串的特征值。可以理解的是,这里对文本子串的特征提取,目的是将所有的文本子串划分为若干类别,以便于后续的区分存储,因此本申请方案理论上并不需要对具体的特征提取规则进行限定,在实际应用中,本领域技术人员可以根据实现复杂度、特征数量等因素选取适当的特征提取规则。s103,针对任意文本子串,将其索引信息写入以其特征作为标识的索引文件中。确定每个文本子串的特征后,根据文本子串的特征对文本子串进行区分存储。具体而言,以文本子串的特征作为索引文件的标识,将具有相同特征的文本子串的索引信息写入具有该标识的索引文件,这样就可以根据索引文件的标识信息确定该文件中具体包括哪些文本子串的索引信息,进而在在后续进行搜索时,可以直接根据给定搜索词的特征找到相应的索引文件。其中“以特征标识索引文件”,具体可以是在索引文件名中包含与特征相关的信息,也可以是在索引文件的其他可读位置(例如索引文件摘要、索引数据中的特定存储位置,等等)中记录与特征相关的信息。“与特征相关的信息”可以是特征值本身、特征值的某种形变、特征值的某种编码等等。总之,可以实现“对于一个给定的特征,能够确定存储有该特征字符串索引信息的索引文件”的基本需求即可。参见图2所示,基于上述的索引构建方法,在实际进行搜索时,对应的搜索方法可以包括以下步骤:s201,根据预设的特征提取规则,确定搜索文本串的特征;这里的搜索文本串可以是用户输入的搜索关键词本身、也可以是对搜索关键词进行某种预处理后得到的结果,例如对搜索关键词的进行分词后得到的多个分词单元、搜索关键词的同义词、搜索关键词的智能纠错结果,等等。具体 的预处理方式由实际搜索引擎的搜索策略决定,本申请中不做限定。另外,可以理解的是,本步骤中的特征提取规则,应该与s102中特征提取规则保持一致。s202,在以所述搜索文本串的特征为标识的索引文件中,查找所述搜索文本串的索引信息;由于在索引构建阶段,已经根据文本子串的特征对索引信息进行分别存储,并且以相应的特征信息作为索引文件的标识,因此在本步骤中,可以根据当前搜索文本串的特征,直接定位到存储有该搜索文本串索引信息的索引文件。s203,根据索引信息查找结果生成搜索结果。根据s202所定位到的索引文件,在该索引文件中进一步查找该搜索文本串的索引信息,并进一步生成搜索结果。可见,应用本申请方案,由于根据文本子串的特征对索引文件进行的区分存储,因此在搜索阶段,针对某个特定的搜索文本串,可以一次性定位到包含该搜索文本串的索引文件,避免遍历所有的索引文件,从而提高搜索效率。另外,根据本申请方案,当所有的已知文档中不包含用户想要的搜索结果时,对应几种情形的处理方式如下:如果在s202没有找到以搜索文本串特征为标识的索引文件,则直接返回“无匹配搜索结果”;如果在s202找到以搜索文本串特征为标识的索引文件,但是在该索引文件中并没有查找到搜索文本串的索引信息,则返回“无匹配搜索结果”,无需考虑其他索引文件;可见,在“无匹配搜索结果”时,本申请方案与现有技术方案(需要遍历所有的索引文件)相比,搜索效率也得到了明显的提升。可以理解的是,以上实施例重点是对本申请与现有技术的区别进行说明,在实际应用中,本申请方案的各个步骤均可以采用现有的其他方式实现。例如:在索引信息中,除了记录包含索引词的文档标识之外,还可以进一步记录索引词在各个文档中的词频信息、出现位置信息等;索引文件可以采用“哈希表+链 表”、树形结构等方式进行存储;在索引文件内部可以采用二分法查找具体的索引信息;等等。本领域技术人员可以根据实际情况选择具体的实施方式,本申请不做限定。下面结合一个具体的实例,对本申请方案进行示意性说明。假设特征提取规则为:以文本子串首字的汉语拼音首字母作为该文本子串的特征,则对于以下几个给定文本子串:安全、爱情、阿里巴巴、班级、帮忙、苍白、彩票,索引建立过程如下:首先对文本子串进行特征提取,结果如下:安全,特征为a;爱情,特征为a;阿里巴巴,特征为a;班级,特征为b;帮忙,特征为b;苍白,特征为c;彩票,特征为c;然后根据各个文本子串的特征,分别将文本子串的索引信息写入具有对应特征标识的索引文件,假设特征a、b、c对应的索引文件名分别为:index_a、index_b、index_c,则最终的索引信息写入结果如下:索引文件index_a:安全文档2,文档3爱情文档1,文档3,文档5阿里巴巴文档2,文档3,文档5索引文件index_b:班级文档2,文档4帮忙文档5索引文件index_c:苍白文档3,文档6彩票文档5,文档6生成上述索引文件后,在搜索阶段,几种可能出现的情形如下:假设用户输入的搜索关键词为“彩票”,则搜索引擎首先提取该关键词的特征,特征提取规则与索引建立阶段一致,仍然为“以文本子串首字的汉语拼音 首字母作为该文本子串的特征”,对应的特征提取结果为“c”,然后直接在以特征c为标识的索引文件index_c中,查找到“彩票”的索引信息,最后将“文档5、文档6”作为搜索结果输出。假设用户输入的搜索关键词为“参考”,首先得到特征提取结果为“c”,然后直接在以特征c为标识的索引文件index_c中,查找“参考”的索引信息,由于查找失败,因此将输出“无匹配搜索结果”。假设用户输入的搜索关键词为“代码”,首先得到特征提取结果为“d”,由于当前不存在以特征d为标识的索引文件,因此直接输出“无匹配搜索结果”。可见,应用本申请方案,无论已知文档中是否包含用户所希望的搜索结果,在进行搜索时都不需要遍历所有的索引文件。上述实施例中,是以文本子串首字的汉语拼音首字母作为该文本子串的特征,实际应用中,并不仅限于提取首字的拼音首字母,例如,在不超过文本子串长度的前提下,可以提取文本子串前2个字符、前3个字符……作为该文本子串的特征。在本申请的一种具体实施方式中,还可以动态提取文本子串的前m个字符的首字母作为该文本子串的特征,其中m的取值可以根据待处理文本子串第1个字符的首字母使用频率动态确定,这样做的好处是避免某个索引文件体积过大。例如,对于特征a、b、c,由于以b、c为首字拼音首字母的词条,相对于以a为首字拼音首字母的词条数量更多(具体可以体现为使用频率统计是否大于某个阈值),因此对于以b、c为首字拼音首字母的文本子串,可以提取前2个字符的首字拼音首字母作为特征。例如“班级”的特征为bj,“帮忙”的特征为“bm”,等等。对应的索引文件也可以命名为例如index_bj、index_bm,等等。为了避免索引文件过于分散,可以将多个特征对应的索引信息按照一定规则进行合并,例如:将ba~bm特征对应的索引信息合并存储在名为index_b1索引文件中,将bn~bz特征对应的索引信息合并存储在名为index_b2索引文件中。当然,由于用户设备对索引文件的限制,即便是对于某一个特征的索引文件,也可能会出现体积超标的情况,这时就需要对索引文件进行拆分存储处理。 拆分的基本原则是:对于某个特征x,拆分后得到的多个子文件仍然都以x作为标识,并且子文件之间有所区别。进一步的要求是:能够按照一定的规则进行拆分,以避免在确定搜索文本串的特征后,还要再次遍历该特征的不同索引子文件。例如,对于特征为b的索引词,当索引文件体积超过预设阈值时,按照索引词第二个字的拼音首字母(a~m或n~z),将索引词拆分存储在两个索引子文件中index_b1,index_b2,(此处与前一实施例的区别在于:第二个字的拼音首字母是作为一种拆分存储规则,而不是作为特征的一部分),同时对上述拆分存储规则进行记录。在搜索阶段,用户输入的搜索关键词为“班级”,则首先提取出该词特征b,发现特征b对应多个索引子文件之后,进一步读取特征b对应的拆分存储规则,然后根据该规则确定:应该在子文件index_b1中查找“班级”对应的索引信息。随着文档数量的增加,需要索引的信息量也会越来越大,如果有需要,还可以继续将某个特征的索引子文件拆分为3个、4个……。另外,也可以根据某个特征对应的文本串数量(可以是统计值或经验值等),预先配置该特征对应的索引子文件数量,并且确定拆分存储规则,从而避免后续在索引构建过程中,对索引文件进行多次拆分处理。对于本地搜索应用而言,用户设备存储空间受限也是一个需要考虑的问题,根据现有技术的方案,在对文档中的文本串进行切分时,采用的方式是逐字切分的穷举法。例如,需要针对文本串“今天天气真好”来建立索引,那么切分的出的文本子串包括:“今”“天”“气”“真”“好”“今天”“天天”“天气”“气真”“真好”“今天天”“天天气”“天气真”……等,直至“今天天气真”“天天气真好”“今天天气真好”。也就是说,对于长度为n的文本串,切分出的文本子串数量为:数量级别达到了o(n3),当需要索引的内容增加时,索引文件的体积会迅速增大。针对上述问题,本申请提供的一种的文本串切分方案为:将长度为n的文本串切分为n个文本子串,分别为:该文本串的第1~n个字符、该文本串的第2~n个字符、……该文本串的第n个字符。也就是说,对于长度为n的文本串,切分出的文本子串数量为:数量级别减小至o(n2)。仍以前面的例子进行说明,应用本申请方案,如果需要针对文本串“今天天气真好”来建立索引,那么切分的出的文本子串仅包括:“今天天气真好”,“天天气真好”,“天气真好”,“气真好”,“真好”,“好”。假设用户需要搜索“天气”,则先提取“天气”的特征,然后在该特征对应的索引文件中搜索“天气”的索引信息即可。可见,本申请所提供的文本串切分方案,与现有的文本串切分方案相比,在不影响索引内容全面性的情况下,切分出文本子串的数量明显减少,因此可以有效缩减索引文件的体积,更适应于存储空间受限的应用场景。同时,由于单个特征索引数据量也得到有效控制,因此也能够进一步提高在索引文件内部进行索引信息查找的效率。相应于上述方法实施例,本申请还提供一种搜索引擎索引构建装置,参见图3所示,该装置可以包括:切分模块110,用于对文档中的文本串进行切分处理,得到对应的文本子串;特征确定模块120,用于根据预设的特征提取规则,确定每个文本子串的特 征;索引信息写入模块130,用于针对任意文本子串,将其索引信息写入以其特征作为标识的索引文件中,其中,每种特征至少对应一个索引文件。在本申请的一种具体实施方式中,切分模块110可以具体用于:将长度为n的文本串切分为n个文本子串,n个文本子串分别为:该文本串的第1~n个字符、该文本串的第2~n个字符、……该文本串的第n个字符。在本申请的一种具体实施方式中,特征确定模块120可以具体用于:将每个文本子串前m个字符的拼音首字母序列确定为该文本子串的特征,m≥1。在本申请的一种具体实施方式中,m的取值可以根据待处理文本子串第8个字符的首字母使用频率动态确定。参见图4所示,在本申请的一种具体实施方式中,上述装置还可以包括:索引文件拆分模块140,用于当索引文件的体积超过预设阈值时,对该索引文件进行拆分存储处理。索引文件配置模块150,用于针对每种特征,根据该特征对应的文本串数量,预先配置该特征对应的索引文件数量。可以理解的是,索引文件拆分模块140与索引文件配置模块150作为两种功能独立的模块,既可以如图4所示同时配置在装置中,也可以分别单独配置在装置中,因此图4所示的结构不应理解为对本申请方案的限定。本申请还提供一种基于上述搜索引擎索引的搜索装置,参见图5所示,该装置可以包括:特征确定模块210,用于根据特征提取规则,确定搜索文本串的特征;索引信息查找模块220,用于在以搜索文本串的特征为标识的索引文件中,查找搜索文本串的索引信息;搜索结果生成模块230,用于根据索引信息查找结果生成搜索结果。本申请还提供一种搜索系统,该系统包括上述的索引构建装置以及搜索装置。如图6所示,索引信息查找模块220利用索引信息写入模块130生成的索引进行搜索。特征确定模块120具体用于在索引构建阶段对索引词进行特征确定,而特征确定模块210具体用于在搜索阶段对搜索词进行特征确定,两个模块使用的特征提取规则一致。上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置或系统实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本申请方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述仅是本申请的具体实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1