基于云计算的数据搜索方法与流程

文档序号:11950871阅读:622来源:国知局
本发明涉及数据搜索,特别涉及一种基于云计算的数据搜索方法。
背景技术
:随着互联网的发展,搜索引擎要处理的数据量越来越大,对搜索引擎的性能要求越来越高。高效的针对用户的搜索词,可以挖掘出一些潜在的用户意图,其中根据搜索词的分类可以得知用户想搜索到哪个领域的结果,针对用户意图及这个领域的特点可以给用户推荐满足用户需求的应用,来优化搜索结果。为了提高信息检索效率,信息检索系统一般都采用基于云的并行计算平台和索引技术。索引的结构设计、存储方式、检索操作和动态更新算法对信息检索的效率有很大的影响。然而,现有技术的搜索引擎对搜索词的处理不够完善,没有特别对用户意图进行有效预测。并且在索引处理上,索引的添加需要将新增的记录与原有的索引的相同项合并。在HDFS中这项操作需要重新创建块。每个DataNode上的副本信息也需要更新。而且在索引中的删除内容只能删除整个块,并产生大量的I/O通信,浪费大量的时间和资源。技术实现要素:为解决上述现有技术所存在的问题,本发明提出了一种基于云计算的数据搜索方法,包括:将多个文档组成基本索引,运行于HDFS的DataNode上;在HDFS的NameNode上建立增量索引和差分索引,分别用于保存新增的索引项和待删除索引项;根据预定义策略对索引项数据进行压缩编码。优选地,所述文档由多个索引项构成,每个索引项包含一个检索词和多个文件列表,文件列表由文件ID和该检索词在这个文档中出现的次数和位置信息构成,基本索引文件保存在HDFS中,被分块后存储于集群中不同的DataNode;差分索引包括无效文档列表,记录所有文档库中要被删除的文档ID,响应检索请求时,根据该列表从检索结果中过滤掉该列表中的所有ID对应的文件;差分索引在文档库中有文件被删除时生成,当差分索引文件达到一定阈值时,系统根据该差分索引文件更新基本索引;当文件库中有新增文件时,由该文件生成一条独立增量索引,独立索引用于记录一个文档中出现的所有检索词在该文档中出现的信息;当独立索引的数量到达一定的阈值,触发合并过程,将所有独立索引合并为一个整体,即一个增量索引;当增量索引的数量达到一定阈值时,触发合并操作将多个增量索引合并到基本索引中;索引结构中,将词库中的词按频率划分为高频词和低频词,对不同频率的词采用不同的方式存储在NameNode内存中,以散列表的形式组织;对于高频词,每个词用一个独立的文件保存其索引,对于低频词,将多个检索词的表保存到同一个文件中;通过散列函数将每一个高频词的索引信息映射到独立的文件中,并将多个低频词的索引信息映射到一个文件中;检索时根据词的频率属性,采用不同的方式进行分布式检索;设置索引项的结构如下:<wordid,docnum,<docid,freq,<p1,p2,...,pn>>,...,<docid,freq,<p1,p2,...pn>>>Wordid表示检索词,docnum代表检索词wordid在docnum个文档中出现过;后面为docnum个Doclist,每个Doclist表示wordid在一个文件中出现的次数和位置信息;Docid代表该检索词出现的一个文件编号,freq表示检索词在这个文件中出现的次数,随后是一个长度为freq的列表,表示检索词每次出现的位置信息;上述结构中存在两个递增的列表:递增的文档ID号:(doc1,doc2,doc3,...,docn);递增的位置信息序列:(p1,p2,p3,...,pn);保留序列中的第一项,后面的每一项用它与前一项的差值来代替;处理之后的序列为:文档ID差值序列:(doc1,doc2-doc1,doc3-doc2...,docn-docn-1);—个文件中位置差值序列:(p1,p2-p1,p3-p2...,pn-pn-1)。优选地:当搜索引擎抓取到一定数量的网页本地文本库之后,对抓取的文本文件进行预处理,然后按以下过程建立索引:步骤l.对抓取到的文本进行分词,然后将分词后的文件存放到HDFS的各个DataNode中;步骤2.创建一个MapReduce的作业处理器,负责控制建立作业的执行;步骤3.作业处理器创建map任务,map任务运行在DataNode上,每个分块中的文档分别进行处理,产生中间文件;步骤4.map任务执行完后,多个reduce任务开始执行,将map任务产生的中间文件合并,生成索引文件;步骤5.根据检索词的频率属性和在词库中的词频排序,采用以下散列函数,将不同的检索词的索引保存到不同文件;其中,通过散列函数将每一个高频词的索引信息映射到独立的文件中,进一步包括:将散列函数表示为SHA1(f(r)),将低频词的频率排序作为函数的输入,输出保存该词索引的文件名;r是该检索词在词库中词频排序,f(r)将多个检索词根据词频排序映射到一个正整数值,表达为:f(r)=r-r%(10*α)N<r≤10Nr-r%(20*α)10N<r≤50Nr-r%(40*α)50N<r]]>N是一个阈值,表示在词库中,排序大于N的检索词属于低频词,排序小于或等于N的词是高频词,α为预定义正实数参数。本发明相比现有技术,具有以下优点:本发明提出了一种基于云计算的数据搜索方法,利用搜索词的特征表示理解用户意图,并通过改进的索引机制提高了搜索引擎的效率,增强了用户体验。附图说明图1是根据本发明实施例的基于云计算的数据搜索方法的流程图。具体实施方式下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。本发明的一方面提供了一种基于云计算的数据搜索方法。图1是根据本发明实施例的基于云计算的数据搜索方法流程图。本发明根据用户输入的检索词,使用预先训练好的分类器对检索词的扩充文本进行分类,将分类结果发送给应用系统,识别检索词的属性和用户意图,获得模板和数据,再以Web应用的形式呈现到搜索引擎中。所述应用系统包括:代理服务器,保护内部系统端口不对外暴露,并且支持高并发、负载均衡,也有助于提高访问速度。Web服务器:采用MVC的架构,调用各个服务,将数据进行聚集,最终与页面样式进行整合。缓存服务器:将一些更新频率低的信息存储在缓存服务器中,而不需要反复检索数据库,缓解数据库的压力。属性识别服务:识别出子类别及用户意图,来选择适合于用户需求的应用模板。分领域资源库:根据不同的领域,建立自己的资源库。数据库:采用主库和从库的结构,主库负责写入,从库负责读取,实现读写分离。另外主库之间需要同步,从库也要与主库的数据保持同步。检索服务器:当检索是带有一定条件,或有排序的需求时,使用索引的技术来快速根据检索条件得到结果。针对检索词的分类,本发明利用搜索引擎对检索词进行文本扩充,将检索词扩充为搜索引擎结果中的前k条摘要信息,k为扩充后的词条数,将扩充文本的分类结果作为原搜索文本的分类结果。在检索词预处理阶段,是将检索词进行扩充,用向量的形式存储,丢弃广告、图片、Web应用等信息量较少的结果,过滤网页标签,提取前k条摘要为文本的扩充结果,然后对扩充文本进行预处理,预处理分为分词、丢弃停用词。每个摘要,即一个文档,里面包含的是特征项集合,将它用向量来表示。然后在训练阶段,根据训练集中的文本的扩充信息,进行特征选择、特征加权、建立分类器。具体包括将训练集中的检索词扩充为在检索词预处理阶段中获取到的该检索词的扩充文本。利用特征选择方法选择代表性特征项,将大数量级的特征项降维,使用本发明改进的适用于文本分类的改进逆向词频方法进行特征加权,最后使用文本分类的方法建立分类器,供测试阶段使用。在分类阶段,将待分类的检索词进行分类。具体包括先将待分类检索词扩充为扩充文本,然后利用在训练阶段提取出来的特征进行降维,用特征加权方法将特征用向量表示,最后利用训练阶段优化好的分类器对扩充信息的特征向量进行分类,得到的结果为该检索词的分类。通过反馈训练的算法调整分类器模型。分类器判断一个文本属于哪个分类的同时,给出一个可信度,如果该值低于阈值,则判定它的可信度不高,会记录到反馈训练的数据文本集。通过大数据平台离线分析用户行为日志,获取点击量小于预定点击量阈值的Web应用对应的检索词,将这些词也记录到反馈训练的数据文本集当中。然后人工进行筛选、标注,将一部分高访问量的检索词直接放入高频词表中,下一次搜索的时候会先与高频词表中的词进行匹配,一部分作为学习反馈的最终数据。依次对比训练分类器中的向量与原分类器中向量的近似度,如果相似,就删除原分类器中的这条向量,用新向量替代,如果没有找到相似的向量,就添加到新的分类器向量中。其中利用训练阶段优化好的分类器对扩充信息的特征向量进行文本分类,进一步分为文本向量逆向词频建立和计算近似度矩阵。本发明结合分词特性与结合领域知识的语义权值,在所有的DataNode均部署分词工具包,在分词后获得文本的检索词以及该检索词在本文档的出现次数,以统计词频,扫描领域知识库,计算出该词的位置权值和语义跨度权值,再在第一个Map阶段调用语义近似度函数进行统计。然后,在Reduce阶段计算每个词的逆向词频,将这些信息输出为第二个MapReduce的输入。在第二个Map阶段,计算语义近似度结果,如果近似度大于预设语义阈值,则返回语义权值,否则不加权,再组合所有的权值,得到最终语义权值。第二个Reduce阶段,对向量规格化处理。对于每一个文本,只需要计算编号大于自己文本的近似度,即可计算出整个矩阵。MapReduce环境下并行化设计方案如下:Map阶段:首先进行数据分割,将分割的数据由NameNode分配给DataNode,同时给DataNode编号,同时计算文本的近似度,当Map阶段结束后,将中间结果输出到本地作为Reduce阶段的输入;Reduce阶段:收集每一行的数据,并且汇总输出矩阵。然后采用优化划片的输入方式,将高维矩阵分块成小矩阵运算。Map阶段进行数据划片,根据划片偏移信息读取子矩阵A和B在本地做乘法,结果为矩阵C的一个子矩阵,输出到指定偏移位置。Reduce阶段计算矩阵C=AB。将对称矩阵通过正交相似变换表示成对称三对角矩阵。求解对称三对角矩阵的前K个最小特征向量,将对称三对角矩阵的运算最终转化为拉普拉斯矩阵与向量的相乘运算。得到矩阵的最小特征值和特征向量后,计算每个文本到某一集合的近似度。在索引结构的改进方面,本发明的索引结构包括基本索引、增量索引、差分索引和词库。根据上述结构,采用基于词频大小和词频排序的文件存储策略,以及项中数据的压缩编码。针对上述索引结构,设计了在云平台下进行相应的索引建立、更新、删除和检索。索引结构由运行在HDFS的NameNode上的增量索引、差分索引以及词库和运行于DataNode上的基本索引构成。基本索引由多个文档组成。文档由多个索引项构成。每个索引项包含一个检索词和多个文件列表。文件列表由文件ID和该检索词在这个文档中出现的次数和位置信息构成。文件保存在HDFS中,被分块后存储于集群中不同的DataNode。差分索引保存在HDFS的NameNode上。无效文档列表记录所有文档库中要被删除的文档ID,响应检索请求时,系统根据该列表,从检索结果中过滤掉该列表中的所有ID对应的文件。差分索引在文档库中有文件被删除时生成。到差分索引文件达到一定阈值时,系统根据该索引文件更新基本索引。增量索引运行在HDFS的各个DataNode上,用于保存新增的索引项。当文件库中有新增文件时,由该文件生成一条独立索引。独立索引用于记录一个文档中出现的所有检索词在该文档中出现的信息。当独立索引的数量到达一定的阈值,会触发合并过程,将所有独立索引合并为一个整体,即一个增量索引。当增量索引的数量达到一定阈值时,也会触发合并操作,将多个增量索引合并到基本索引中。索引结构中,将词库中的词按频率划分为高频词和低频词,对不同频率的词采用不同的方式存储在HDFS的NameNode内存中,以散列表的形式组织。对于高频词,每个词用一个独立的文件保存其索引,对于低频词,将多个检索词的表保存到同一个文件中。通过散列函数将每一个高频词的索引信息映射到独立的文件中,并将多个低频词的索引信息映射到一个文件中。检索时,根据词的频率属性,采用不同的方式进行分布式检索。索引项的结构如下:<wordid,docnum,<docid,freq,<p1,p2,...,pn>>,...,<docid,freq,<p1,p2,...pn>>>Wordid表示检索词,docnum代表检索词wordid在docnum个文档中出现过。后面为docnum个Doclist,每个Doclist表示wordid在一个文件中出现的次数和位置信息。Docid代表该检索词出现的一个文件编号,freq表示检索词在这个文件中出现的次数,随后是一个长度为freq的列表,表示检索词每次出现的位置信息。上述结构中存在两个递增的列表:递增的文档ID号:(doc1,doc2,doc3,...,docn)。递增的位置信息序列:(p1,p2,p3,...,pn)。保留序列中的第一项,后面的每一项用它与前一项的差值来代替。处理之后的序列如下:文档ID差值序列:(doc1,doc2-doc1,doc3-doc2...,docn-docn-1)。—个文件中位置差值序列:(p1,p2-p1,p3-p2...,pn-pn-1)。变换处理后的序列,样本空间缩小并能使用更高效的压缩方法。当搜索引擎抓取到一定数量的网页本地文本库之后,需要建立初始索引。建立索引前,需要对抓取的文本文件进行预处理,最重要的一步即是分词处理。建立索引的基本过程描述如下:步骤l.首先对抓取到的文本进行分词,然后将分词后的文件存放到HDFS的各个DataNode中。步骤2.接着创建一个MapReduce的作业处理器,负责控制建立作业的执行。步骤3.作业处理器根据情况创建map任务,map任务运行在DataNode上,每个分块中的文档分别进行处理,产生中间文件。步骤4.map任务执行完后,多个reduce任务开始执行,将map任务产生的中间文件合并,生成索引文件。步骤5.根据检索词的频率属性和在词库中的词频排序,采用以下散列函数,将不同的检索词的索引保存到不同文件。所述散列函数表示为SHA1(f(r)),将低频词的频率排序作为函数的输入,输出保存该词索引的文件名。r是该检索词在词库中词频排序,f(r)将多个检索词根据词频排序映射到一个正整数值,表达为:f(r)=r-r%(10*α)N<r≤10Nr-r%(20*α)10N<r≤50Nr-r%(40*α)50N<r]]>N是一个阈值,表示在词库中,排序大于N的检索词属于低频词,排序小于或等于N的词是高频词。其中α为预定义正实数参数。在搜索引擎不断爬取互联网信息时,索引更新过程如下:当文本库中的新增文本达到一定数量时,触发系统调用对文本分析生成一定数量的独立增量索引,独立增量索引保存于内存中。当内存中的独立增量索引增加到一定数量时,触发独立增量索引合并程序,将相同检索词的多项索引合并为一项,保存到相应的增量索引文件中去。当增量索引文件达到一定的数量,触发主文件合并程序。其中,生成单一增量索引的操作由网络爬虫触发,对网络爬虫系统新添加的文本进行分析,生成该文本中所有检索词的项。该操作以MapReduce的方式运行在HDFS中的不同DataNode上,尽量满足数据本地化,生成的单一增量索引分布在不同的DataNode上。增量索引合并操作由生成单一增量索引的操作触发。当一个DataNode内存上的数据达到阈值,该操作会将单一增量索引合并到HDFS中的增量索引文件。检索词与增量索引文件名的映射关系同样由上述散列函数来完成。增量索引与基本索引的合并操作由单一增量索引和增量索引合并操作触发。本发明进行信息删除的策略是基于差分索引的。增量索引合并时触发删除操作的阈值P1定义如下:P1=N1/N2N1表示增量索引含有的被删除文档个数,N2为差分索引中无效文档列表中元素个数。增量索引与基本索引的合并时触发删除操作的阈值P2定义如下:P2=N1/N3N1同样是差分索引中无效文档列表中元素个数。N3是文档集中所有文档数。当增量索引合并操作发生时,先判断是否达到阈值P1。如果达到,首先从差分索引文件中读取所有的差分索引,将增量索引中所有包含这些差分索引的信息删除,然后再合并到基本索引。如果没有达到阈值,就直接合并到基本索引。合并到基本索引以后,再判断是否达到阈值P2。如果达到,就将基本索引信息中删除所有差分索引中的信息。这样,系统响应检索请求时,先从基本索引和增量索引信息获取检索结果,再根据删除文档中的无效文档列表过滤掉已经被删除了的文档信息。当某个时间段的差分索引用来更新了增量索引和基本索引中的所有信息后,就将该时间段的差分索引从文件中删掉并将该事件段删除的所有文档ID从无效文档列表中删除。索引的检索是搜索引擎系统响应检索请求的关键操作。搜索引擎收到检索请求后,对输入的检索词信息进行分析处理,然后用处理后的检索词来对索引进行检索。操作步骤描述如下:步骤l.用检索词检索词库。先根据散列函数获取到该检索词基本信息在内存中的位置,然后读取到基本信息。判断词库中基本信息的高低频字段。如果是高频词,转到步骤2,如果是低频词,则转到步骤3。步骤2.调用散列函数将检索词作为输入,得到保存该检索词索引的文件名。步骤3.调用散列函数,将检索词的词频排序信息作为函数输入,得到保存该检索词索引的文件名。步骤4.根据得到的HDFS的文件名,对基本索引进行检索。首先创建任务管理器,执行MapReduce任务,在系统的各个DataNode上分别运行一定数量的Map任务和Reduce任务。Map任务处理文件在本地的分块数据,从中获取到数据项,保存为中间数据。然后传递给Reduce任务进行合并处理。Reduce任务的输出即为检索的初始结果。步骤5.用与步骤4相同的方法,对增量索引文件进行MapReduce检索,查到的结果与上一步得到的初始结果合并。步骤6.从内存中检索独立增量索引,检索结果与上一步得到的结果合并。步骤7.检索NameNode中的差分索引,根据无效文档列表,对上一步得到的结果进行过滤处理。步骤8.将得到的所有文档列表通过预定义算法进行排序。步骤9.返回排序后的结果。综上所述,本发明提出了一种基于云计算的数据搜索方法,利用搜索词的特征表示理解用户意图,并通过改进的索引机制提高了搜索引擎的效率,增强了用户体验。显然,本领域的技术人员应该理解,上述的本发明的各模块或各步骤可以用通用的计算系统来实现,它们可以集中在单个的计算系统上,或者分布在多个计算系统所组成的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储在存储系统中由计算系统来执行。这样,本发明不限制于任何特定的硬件和软件结合。应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1