基于用户日志分析的分布式倒排索引组织方法

文档序号:6369472阅读:423来源:国知局
专利名称:基于用户日志分析的分布式倒排索引组织方法
技术领域
本发明涉及计算机信息检索技术领域,具体涉及一种基于用户日志分析的分布式倒排索引组织方法。
背景技术
随着互联网技术的不断发展,当今社会每天都会产生大量的信息,这些信息往往会以网页、图片、视频、音频等非结构化数据的形式展现。面对如此浩如烟海的数据量,人们要想从中获得符合自己需求的信息,如大海捞针般困难。因此,在这个海量信息的时代,要想快速、效地获得有用信息,必须借助各式各样的信息检索系统(Information RetrievalSystem, IRS)。IRS的主要目的是为人们提供有效的信息服务,是根据特定信息需求建立起来的,实现了信息搜索、加工、存储和检索等功能的程序化系统。从广义上来讲,任何具有了信息存储和检索功能的系统,都可以称之为IRS系统。
IRS系统的种类繁多,如数字图书馆、搜索引擎等,但此类系统都有针对信息数据的索引。随着信息数据量的不断增加,索引也必然会不断膨胀,最终导致存储和检索效率变得十分低下。为了解决这个问题,一般采用分布式索引,将原来存储在单台机器上的庞大的索引切割成大小合适的索引碎片,并将这些索引碎片分布到不同的机器上,形成索引集群,从而把原先对巨大单一索引的访问转换为对索引集群的查询,索引集群则通过合适的索引分割方式、查询路由策略以及最终的结果合并实现快速而有效的查询。由此可以看出,分布式索引系统已经成为IRS系统乃至信息领域里一个至关重要的组成部分,要实现海量数据的有效管理,就必须先实现高性能的分布式索引系统。在倒排索引的分布式处理过程中,最重要的问题之一就是索引的分割切片。目前最主要有三种方式“全局分割”、“局部分割”和“混合分割”。“全局分割”也叫基于“文档”的分割,每块索引碎片所包含的信息都具有全局意义。基于“文档”的划分策略虽然使整个索引结构易于维护,节点之间的负载更加均衡、但是每次查询所有节点都要参与,系统资源浪费严重。而在“局部分割”中,又叫基于“词”的分割,每块索引碎片所包含信息只具有局部的意义,即只针对某个子数据集的索引。基于“词”的划分策略能有效减少每次参与查询的节点数,增大整个系统的吞吐,但由于“词”之间被查询频率存在很大差别,容易造成节点间的负载不均。这两种分割方式在不同的应用坏境和查询条件下各有优劣,出于各取其优的考虑,出现了“混合分割”的分片组织方式,“混合分割”的基本思想是部分“全局”部分“局部”,而不同方法的区别在于如何划分“全局”与“局部”,以及这两部分如何交互。现有“混合分害I]”方法一般设计简单,没有考虑“词”之间被查询频率的差别,总体效果并不理想。在实现分布式索引系统的基础上,需要利用查询路由来从分布式索引系统中获取查询结果。的查询路由是建立在“索引分割”基础之上的查询节点选择,其一方面利用索引分片信息选择合适的索引集群节点进行查询,另一方面在保证结果集准确率的前提下,尽可能减少参与查询的节点,同时为集群的负载均衡、索引分片副本调整等方法提供依据。

发明内容
本发明要解决的技术问题是提供一种查询开销小、查询效率高、查询性能好、能实现整个系统吞吐量和每次查询响应速度间的平衡、多词查询涉及的节点数少的基于用户日志分析的分布式倒排索引组织方法。为解决上述技术问题,本发明采用的技术方案为一种基于用户日志分析的分布式倒排索引组织方法,其实施步骤如下I)分析用户查询日志并提取出高频词和非高频词,建立高频词的相关性矩阵,并根据闻频词之间的相关性建立闻频词关系图;2)计算每个高频词的负载,根据高频词关系图和高频词的负载对高频词进行聚类; 3)将各个聚类分配到节点之上并建立高频词索引,将非高频词哈希到各个节点之上,并建立非高频词索引;4)根据所述高频词索引和非高频词索引建立全局的索引表,并根据该索引表进行查询路由。作为本发明上述技术方案的进一步改进所述步骤I)的详细步骤为I. I)解析用户查询日志,将用户查询日志进行分词得到查询词典,统计每个词的出现频率并将查询词典按照出现频率降序或者升序排列,从查询词典的高出现频率端截取指定数量的词作为高频词,剩余的词则为非高频词;I. 2)将截取的高频词建立高频词典,将高频词典中的高频词从I到N统一编号建立NXN的高频词的相关性矩阵;I. 3)将所述高频词的相关性矩阵转换为无向图得到高频词关系图。所述步骤2)的详细步骤包括2. I)计算每个高频词的负载,将节点按照负载降序排列得到节点集合,计算节点集合中任意两个节点之间的节点距离;2. 2)定义每个聚类的负载上限、聚类个数以及聚类中心之间的最短距离和中心节点集合,从所述节点集合中取出一个节点作为当前节点,然后跳转执行步骤2. 3);2. 3)将当前节点与中心节点集合中的中心节点进行比较,如果中心节点集合中找到某个节点与当前节点之间的节点距离小于所述聚类中心之间的最短距离,则将所述中心节点集合中找到的节点和当前节点合并作为中心节点集合中的一个新的中心节点,否则将当前节点作为中心节点集合中的一个新的中心节点;最终执行下一步;2. 4)判断中心节点集合的大小是否达到聚类个数,如果仍未达到聚类个数则从所述节点集合中取出下一个节点作为当前节点并返回继续执行步骤2. 3);如果已经达到聚类个数则执行步骤2. 5);2. 5)根据中心节点集合中的中心节点生成聚类得到聚类集合,计算中心节点集合中每一个中心节点到其他非中心节点的最短距离,并降序排列得到最短距离集合;2. 6)针对聚类集合的每一个聚类,查找所述聚类对应最短距离集合中的下一个节点作为目标节点;计算所述目标节点的负载并判断负载是否超过所述负载上限,如果超过负载上限则忽略该目标节点;判断包含所述目标节点的聚类数是否超过聚类个数,如果超过就忽略所述目标节点;判断所述目标节点是否已经加入其他聚类且所述目标节点在最短距离集合中的上一个节点也属于所述其他聚类中,如果符合条件则在所述目标节点和所述目标节点在最短距离集合中的上一个节点中选择更接近当前聚类和其他聚类中点的节点作为边境节点,所述边境节点同时属于当前聚类和其他聚类两个聚类;如果不符合条件,则直接将目标节点直接加入当前聚类;最终将所有节点归类后完成聚类并返回聚类结果。所述步骤3)的详细步骤包括3. I)计算每个聚类的负载,将聚类按照负载降序排列得到聚类集合;3. 2)建立系统性能的目标函数,从所述聚类集合中选择一个聚类作为当前聚类;3. 3)往所述当前聚类中尝试添加节点并计算所述目标函数值,然后将当前聚类加入目标函数值最小的节点上并建立索引,然后执行步骤3. 4);
3. 4)判断聚类集合中是否还有聚类未处理,如果仍有聚类未处理则取出下一个未处理的聚类作为当前聚类并返回执行步骤3. 3);如果所有聚类处理完成则高频词索引建立完毕;3. 5)将非高频词哈希到各个节点之上建立非高频词索引。所述步骤3. 2)中建立的目标函数的函数表达式如式(I)所示
权利要求
1.一种基于用户日志分析的分布式倒排索引组织方法,其特征在于其实施步骤如下 . 1)分析用户查询日志并提取出高频词和非高频词,建立高频词的相关性矩阵,并根据闻频词之间的相关性建立闻频词关系图; .2)计算每个高频词的负载,根据高频词关系图和高频词的负载对高频词进行聚类; .3)将各个聚类分配到节点之上并建立高频词索引,将非高频词哈希到各个节点之上,并建立非高频词索引; .4)根据所述高频词索引和非高频词索引建立全局的索引表,并根据该索引表进行查询路由。
2.根据权利要求I所述的基于用户日志分析的分布式倒排索引组织方法,其特征在于,所述步骤I)的详细步骤为 I. I)解析用户查询日志,将用户查询日志进行分词得到查询词典,统计每个词的出现频率并将查询词典按照出现频率降序或者升序排列,从查询词典的高出现频率端截取指定数量的词作为高频词,剩余的词则为非高频词; I. 2)将截取的高频词建立高频词典,将高频词典中的高频词从I到N统一编号建立NXN的高频词的相关性矩阵; .1.3)将所述高频词的相关性矩阵转换为无向图得到高频词关系图。
3.根据权利要求I所述的基于用户日志分析的分布式倒排索引组织方法,其特征在于,所述步骤2)的详细步骤包括 .2.I)计算每个高频词的负载,将节点按照负载降序排列得到节点集合,计算节点集合中任意两个节点之间的节点距离; .2.2)定义每个聚类的负载上限、聚类个数以及聚类中心之间的最短距离和中心节点集合,从所述节点集合中取出一个节点作为当前节点,然后跳转执行步骤2. 3); .2.3)将当前节点与中心节点集合中的中心节点进行比较,如果中心节点集合中找到某个节点与当前节点之间的节点距离小于所述聚类中心之间的最短距离,则将所述中心节点集合中找到的节点和当前节点合并作为中心节点集合中的一个新的中心节点,否则将当前节点作为中心节点集合中的一个新的中心节点;最终执行下一步; .2.4)判断中心节点集合的大小是否达到聚类个数,如果仍未达到聚类个数则从所述节点集合中取出下一个节点作为当前节点并返回继续执行步骤2. 3);如果已经达到聚类个数则执行步骤2. 5); .2.5)根据中心节点集合中的中心节点生成聚类得到聚类集合,计算中心节点集合中每一个中心节点到其他非中心节点的最短距离,并降序排列得到最短距离集合; .2.6)针对聚类集合的每一个聚类,查找所述聚类对应最短距离集合中的下一个节点作为目标节点;计算所述目标节点的负载并判断负载是否超过所述负载上限,如果超过负载上限则忽略该目标节点;判断包含所述目标节点的聚类数是否超过聚类个数,如果超过就忽略所述目标节点;判断所述目标节点是否已经加入其他聚类且所述目标节点在最短距离集合中的上一个节点也属于所述其他聚类中,如果符合条件则在所述目标节点和所述目标节点在最短距离集合中的上一个节点中选择更接近当前聚类和其他聚类中点的节点作为边境节点,所述边境节点同时属于当前聚类和其他聚类两个聚类;如果不符合条件,则直接将目标节点直接加入当前聚类;最终将所有节点归类后完成聚类并返回聚类结果。
4.根据权利要求I所述的基于用户日志分析的分布式倒排索引组织方法,其特征在于,所述步骤3)的详细步骤包括 · 3.I)计算每个聚类的负载,将聚类按照负载降序排列得到聚类集合; · 3.2)建立系统性能目标函数,从所述聚类集合中选择一个聚类作为当前聚类; ·3.3)往所述当前聚类中尝试添加节点并计算所述目标函数值,然后将当前聚类加入目标函数值最小的节点上并建立索引,然后执行步骤3. 4); ·3.4)判断聚类集合中是否还有聚类未处理,如果仍有聚类未处理则取出下一个未处理的聚类作为当前聚类并返回执行步骤3. 3);如果所有聚类处理完成则高频词索引建立完毕; 3.5)将非高频词哈希到各个节点之上建立非高频词索引。
5.根据权利要求4所述的基于用户日志分析的分布式倒排索引组织方法,其特征在于,所述步骤3. 2)中建立的目标函数的函数表达式如式(I)所示
6.根据权利要求I 5中任意一项所述的基于用户日志分析的分布式倒排索引组织方法,其特征在于,所述步骤5)中根据索引表进行查询路由的详细步骤如下 ·5. I)初始化查询节点链表;判断用户查询中是否存在高频词,如果存在高频词则跳转执行步骤5. 2),否则将用户查询发给所有节点进行查询并退出; ·5. 2)将剩下的高频词组成子查询并对高频词索引进行查询,如果有符合要求的聚类结果,选出得分最高的聚类并根据查找到对应的节点添加至查询节点链表; ·5. 3)判断查找到的节点是否包含用户查询中剩余的全部高频词,如果不能包含用户查询中剩余的全部高频词则继续返回执行步骤5. 2),否则跳转执行步骤5. 4); ·5.4)判断用户查询中是否存在非关键词,如果不存在非关键词则将通过所述查询节点链表中的节点进行查询;如果存在非关键词则将从其他节点上得到非高频词的倒排链表,并将所述倒排链表通过所述查询节点链表中的节点进行查询。
全文摘要
本发明公开了一种基于用户日志分析的分布式倒排索引组织方法,其实施步骤如下1)分析用户查询日志并提取出高频词和非高频词,建立高频词的相关性矩阵,并根据高频词之间的相关性建立高频词关系图;2)计算每个高频词的负载,根据高频词关系图和高频词的负载对高频词进行聚类;3)将各个聚类分配到节点之上并建立高频词索引,将非高频词哈希到各个节点之上,并建立非高频词索引;4)根据所述高频词索引和非高频词索引建立全局的索引表,并根据该索引表进行查询路由。本发明具有查询开销小、查询效率高、查询性能好、能实现整个系统吞吐量和每次查询响应速度间的平衡、多词查询涉及的节点数少的优点。
文档编号G06F17/30GK102722553SQ20121016972
公开日2012年10月10日 申请日期2012年5月24日 优先权日2012年5月24日
发明者李卓豪, 陈岭 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1