基于CPat-Tree的网络内容分级索引结构和裁剪方法

文档序号:6522836阅读:109来源:国知局
专利名称:基于CPat-Tree的网络内容分级索引结构和裁剪方法
技术领域
本发明属于文本信息检索和互联网技术等领域,具体涉及一种互联网内容实体分类分级索引结构和在该结构上的裁剪方法。
背景技术
随着网络技术的高速发展,互联网越来越多的深入到人们的工作和生活中,成为发布和获取信息的重要渠道。然而,由于互联网信息发布和获取存在高匿名性、高隐私性、高互动性和无地域性等特点,难以对参差不齐的信息内容进行有效管理和制约,这给公众生活和社会生产带来了严重的负面影响。
在公众的生活方面,当前互联网上充斥大量以暴力、色情、反政府和反社会为主要内容的不良信息,正极大干扰着人们的视听,对社会的健康发展造成了不利影响。根据美国N2H2公司2003年的统计,全球大致有8%的网页是色情网页,每天向搜索引擎提交的请求中有四分之一有关色情内容;同时以反政府、反社会为内容的网站网页和电子邮件无孔不入。
在社会生产方面,不设防的计算机网络常常给企业的企业文化、生产成本和效率带来严重的负面影响[1]。首先员工经常在工作时间利用互联网进行与工作无关的行为,占用工作时间,直接导致生产力下降;其次,员工与工作无关的使用互联网、许多恶意网站带来的蠕虫病毒和垃圾邮件占用了大量通向互联网的出口带宽,企业为此额外支付大量费用;不安全的网页包含的恶意代码、特洛伊木马程序和间谍软件(spyware)还会对企业商务和科研信息进行盗用和破坏。IDC公司的一份报告指出30%-40%的企业出口网络带宽消耗在员工的私人目的;北美管理联合会的报告指出有27%的财富500强企业都曾陷入员工不正当使用互联网和电子邮件传播色情信息的丑闻中。
网络的负面效应之大,不良信息内容之广,是人们始料未及的。为了保障互联网信息的内容安全,为社会公众开辟一个“洁净”的网络世界,为企业合理安全的使用网络资源提供技术保障,研究和开发网络内容安全工具具有重要的现实意义[7]。
目前常见的网络内容安全技术主要有标签过滤、关键字过滤、URL过滤、分类过滤和内容过滤等[2][3]。由于这些内容过滤技术分别存在难以监督实施、难以保证分级信息实时性和实现复杂度高等缺点,所以投入研发和运营的网络内容过滤系统往往结合上述几种过滤技术共同实现。
URL过滤是网络内容过滤系统中最常用的技术之一,其主要通过比较用户请求和预定义的分级信息来确定是否拦截用户请求。传统URL过滤技术采用的数据索引结构主要有Trie结构和散列表两种[5]。基于Trie索引结构的优点是查询效率很高,缺点是实现过程中将消耗较大内存量,序列化和反序列化的复杂度较高,在磁盘存取和网络传输的过程中需要进行复杂的转化。基于散列表的优点是查询效率非常高,而且因为使用线性数组表示索引结构,所以序列化和反序列化复杂度较低。其缺点是散列函数的选取和应用增加了实现复杂度,散列表的存储空间依旧保持在一个相对较高的水平。
本发明的创新点在于,提出了基于CPat-Tree[6]结构实现的网络内容分级索引结构,和直接在存储数组上实现的裁剪方法。利用该索引结构和裁剪算法,可使得内容分级索引结构的存储容量能达到非常小的水平,还可大幅提升查询效率。
本发明不仅可以用于内容过滤系统的URL拦截技术中,也可以应用于信息检索的其它领域。例如内容传递网络(CDN,Content Delivery Network)[8]和组播树(MulticastRouting Tree)[9]建模等。
参考文献1.Jacob Palme.Information Filtering.http//cmc.dsv.su.se/select/information-filtering.pdf,1998-06-01.
2.Jonathan Zittrain,Benjamin Edelman.Internet Filtering in China.IEEE Internet Computing,2003,7(2)70-77.
3.Justin Basilico,Thomas Hofmann.A joint framework for collaborative and content filtering.27th Annual International ACM SIGIR Conference.NYACM Press,2004550-551.
4.Menahem Friedman and Abraham Kandel.Introduction to Pattern Recognition-Statistical,Structural,Neural And Fuzzy Logic Approaches.World Scientific,1999.
5.Zornitza Genova Prodanoff.Performance Evaluation of URL Routing for ContentDistribution Networks.SFUniversity of South Florida,2003.
6.M.Shishibori,M.Okada,T.Sumitomo and J.Aoe.Design of a Compact Data Structure for thePatricia Trie.IEICE Transactions on Information and Systems,1998,Vol.E81-D,No.4,pp.364-371.
7.Chen Ding,Chi-Hung Chi,Jing Deng,and Chun-Lei Dong.Centralized Content-Based WebFiltering and BlockingHow Far Can It Go?In Proceeding of IEEE InternationalConference on Systems,Man and Cybernetics(SMC),1999.
8.Survey of Content Delivery Networks(CDNs),http//cgi.di.uoa.gr/~grad0377/cdnsurvey.pdf.
9.Gaurav Sharma.Internet topology and tomography.https//engineering.purdue.edu/people/gaurav.sharma.3/Reports/Modeling.ppt,2005-04.
符号表(在本发明的全部文档中所采用符号的含义)TreeMap按前序顺序记录CPat-Tree树节点结构的比特数组NodeMap按前序顺序记录CPat-Tree树节点包含比特数目的比特数组EList 按前序顺序记录CPat-Tree树节点包含比特值的比特数组IFArray按前序顺序记录CPat-Tree树叶子节点对应的信息矢量{L0,L1,L2...Lu} CPat-Tree结构中树叶子节点对应的信息矢量集合C 簇中心点到对应叶子节点的映射Cj第j个簇中心γ聚类球体的固定半径L 表示当前节点B 表示当前节点的兄弟节点F 表示当前节点的父亲节点TreePosTreeMap数组游标valid、father、brother和ifpos valid元素表示当前节点的有效性;father和brother元素标记当前节点的父亲节点和兄弟节点在TreeMap和NodeInfo数组中的下标;ifpos元素标记当前节点在IFArray的起始位置。
nipos NodeInfo数组的游标nodepos NodeMap数组的游标
TreeMap′、NodeMap′、EList′和IFArray′分别是重组后的几个存储数组发明内容本发明的目的在于提出一种基于CPat-Tree实现的网络内容分级索引结构模型和以此结构为基础的裁剪算法,使得索引结构存储空间大幅降低。
下面先介绍URL的概念。
URL是Uniform Resource Locator(统一资源定位器)的缩写,其数据结构为协议//主机名端口号/目录路径/文件名。
URL与网站或服务器上一个具体的数据对象对应,例如一个URL对应一个门户站点或BBS服务器,也可对应一个站点中一个目录下的一幅特定图片。因此,如果要阻止用户访问某个网站、服务器或特定数据对象,则只要阻止向网络用户发送该URL请求即可。
协议段说明Internet的资源类型,如http表示超文本传输协议或WWW。其他协议有ftp(表示文件传输协议)、telnet(表示远程登录)、news(表示新闻组)、mailto(表示电子邮件)、mms(表示流媒体)等。
主机名段说明Internet的服务器名,例如www.fudan.edu.cn。目录路径段指出文件或部分文件在internet服务器上位置。每一级目录以一个正斜杠(/)符号隔开。
文件名段是将要访问的文档、图像或脚本的实际名称,例如index.html、logo.gif、script.cgi。端口号、目录路径、文件名这些都属于URL的可选组成部分。
下面给出一些URL的实例http//www.w3.org/index.html该URL对应一个网站http//10.64.130.4/images/advice.gif该URL对应一幅图片ftp//10.11.3.8该URL对应一个FTP服务器mms//10.11.4.6/abc.avi该URL用于点播一个音像节目telnet//bbs.fudan.edu.en该URL对应一个BBS服务器本发明提出的网络内容分级索引结构基于CPat-Tree实现。模型采用TreeMap、NodeMap、EList和IFArray等几种数据结构存储整个CPat-Tree。和CPat-Tree[6]中的定义一样,TreeMap和NodeMap是按前序顺序记录树结构的比特数组,EList和IFArray则是本发明引入辅助纪录信息的数组,EList记录节点标记的比特序列,IFArray记录每个节点对应的信息矢量。具体来说,(1)分级索引结构由TreeMap、NodeMap、EList和IFArray数组联合组成;其中,(2)TreeMap比特数组按前序顺序记录CPat-Tree的树状节点结构,以比特0标记内部节点,比特1标记外部节点;(3)NodeMap比特数组按前序顺序记录每个节点包含的比特数目,用1个比特0和若干比特1联合标记,其总数目等于节点包含比特数目;(4)EList比特数组按前序顺序存储每个节点包含的比特值;(5)IFArray数组按前序顺序记录叶子节点携带的信息矢量。
本发明提出的裁剪算法直接针对索引结构的存储数组实现。其主要思想是互联网上许多网站或目录下的网络实体具有相同或相似的信息矢量,并且具有相同的URL前缀。拥有相同前缀的具有相同或相似信息矢量的URL可以用其共同的前缀来替代,以此减少索引结构的存储空间。基本步骤如下聚类过程将CPat-Tree中每个叶子节点根据信息矢量映射到矢量空间中一点,用空间模式识别的方法,把所有的点划分为若干不重合的簇,每个簇由一个固定半径的空间球体标识,簇中的点同处于一个球体中,落在同一个球体中的叶子节点被认为是相似(拥有相同)的信息矢量,这个信息矢量作为该聚类的综合信息矢量,对应球体的中心点;合并过程根据合并规则,依次把每个簇中的叶子节点向上合并,删除该叶子节点,使其父亲节点成新叶子节点。新叶子节点的信息矢量用簇中心的综合信息矢量代替。
重组过程去除临时布尔数组标记的合并掉的节点,重新生成裁剪过的存储数组。经历过重组过程后,裁剪过程结束,索引依然保持着CPat-Tree结构。
本发明中,聚类过程从IFArray数组中获取叶子节点的信息矢量,在矢量空间中聚类,计算聚类的中心节点对应的信息矢量作为聚类的综合信息矢量。确定叶子节点是否相似的方法将叶子节点按携带的信息映射到矢量空间中的点,采用TOD方法来聚类。
合并过程对有相近信息矢量的相邻叶子节点进行合并,叶子节点被注销,父亲节点被置为新叶子节点。合并过程对CPat-Tree数据结构的节点按逆前序顺序遍历一次即可完成。为了避免频繁的合并操作带来频繁的比特移位操作,合并过程利用一个与TreeMap数组等长的临时布尔数组纪录被注销掉的节点,在随后的重组过程中一次性生成裁剪后的存储数组。True值表示TreeMap数组中相应节点未被注销,False值表示TreeMap数组中相应节点已注销。


图1CPat-Tree索引模型的树状示意图。
图2CPat-Tree索引模型的存储数组示意图。
图3160000/320000条URL构成的CPat-Tree索引在各种相似度下的存储容量比较示意图(对数图)。
图432000/96000/160000/320000条URL构建的CPat-Tree分别在相似度0.3-0.9下的TreeMap裁剪剩余率图。
图532000/96000/160000/320000条URL在相似度0.3-0.9下生成的裁剪过的CPat-Tree的查询效率变化趋势图。
具体实施例方式
CPat-Tree索引结构本发明采用改进的CPat-Tree来索引唯一标记网络实体的URL编码和分类分级信息。每个URL编码作为唯一标识实体的键插入CPat-Tree,每个键的生成规则(URL的编码规则)保证了一个键不是另一个键的前缀。从根节点到叶子节点经历的二元序列对应键的比特序列。模型采用TreeMap、NodeMap、EList和IFArray等几种数据结构存储整个CPat-Tree。和CPat-Tree中的定义一样,TreeMap和NodeMap是按前序顺序记录树结构的比特数组,EList和IFArray则是本发明引入辅助纪录信息的数组,EList记录节点标记的比特序列,IFArray记录每个节点对应的信息矢量。
如图所示,附图1给出了一个简单的改进的CPat-Tree的结构图,每个节点有1个标记比特和若干个隐含比特。标记比特为0标识该节点是父节点的左子,否则为父节点的右子;隐含比特对应了Full-Trie和Ordinary Trie中单子节点序列。深色节点标记有隐含比特序列的节点,淡色节点标记无比特节点。隐含比特的数目可以为0,也可以为非0正整数。根节点为空节点,无标记比特和隐含比特。附图2对应附图1给出了改进CPat-Tree的存储数据结构。几种数据结构的定义如下(1)TreeMap比特数组按前序顺序标记CP-Tree的树节点,用比特0标记内部节点,比特1标记叶子节点。
(2)NodeMap比特数组按前序顺序标记每个树节点所包含比特的位数,1位比特0标记节点的标记比特,比特1标记隐含比特。比特1的数目等于隐含比特的数目。
(3)EList比特数组按前序顺序记录每个树节点标示的比特值,EList与NodeMap数组等长,NodeMap中每个比特的取值分别对应着EList数组中每个比特值;EList数组与NodeMap数组等长。
(4)IFArray数组保存了键在信息空间中的矢量。IFArray数组按前序遍历过的叶子节点顺序记录键的信息矢量。IFArray数组中矢量的数目等于TreeMap数组中比特1(叶子)的数目。
裁剪算法聚类过程聚类过程根据叶子节点的信息矢量,把每个叶子节点映射到矢量空间中的一个点,使用模式识别中的聚类方法来对点进行聚类。聚类的结果,对应不同URL的CPat-Tree中的叶子节点被划分在不同的簇中,簇中所有叶子节点的信息矢量用簇中心对应的信息矢量代替。本发明主要基于TOD(Threshold Order-Dependent Clustering Algorithm)[4]方法的聚类过程实现。其主要思想如下定义样本点集合为IFArray数组中的所有叶子节点信息矢量{L0,L1,L2...Lu};足够小的球半径γ作为判断样本点是否存在于某个簇的决策边界;存储簇中心点和包含叶子节点的数组C。首先将L0作为第一个簇的中心C0;然后依次把样本点Li(1≤i≤u)与聚类中心顺序比较,若存在某个Cj满足||Li-Cj||=mink||Li-Ck||]]>且‖Li-Cj‖<γ,则将Li归入以Cj为中心的簇中,并重新计算簇Cj的中心;若不存在满足上述条件的簇中心,则把Li作为一个新的簇中心。
合并过程合并过程的步骤为了避免合并叶子节点操作产生的频繁的移位操作,定义了一个与TreeMap数组等长的临时结构数组,用于标记合并过程后TreeMap数组的各个元素的有效性。
定义合并过程使用的数据结构如下
(1)当前处理节点L,L节点的兄弟节点B,L和B节点的父亲节点F;(2)TreeMap数组的游标TreePos;(3)NodeInfo,结构数组,与TreeMap数组等长,每个结构标记TreeMap中相应节点的信息。每个结构包括valid、father、brother和ifpos元素。其中valid元素表示当前节点的有效性,true值表示有效,false表示无效;father和brother元素标记当前节点的父亲节点和兄弟节点在TreeMap和NodeInfo数组中的下标;ifpos元素标记当前节点在IFArray的起始位置。
合并过程步骤如下步骤1.{初始化}初始化NodeInfo数组的各个元素,其中valid元素初始化为true值;令TreePos←TreeMap.size-1,以指向TreeMap的最后一个元素。
步骤2.{判断当前节点的有效性}若TreePos≤0,则节点遍历过程结束,转步骤7;否则令当前节点为L,若NodeInfo[TreePos].valid=false,则L已被删除,TreePos递减1,转步骤2;步骤3.{定位叶子节点}令TreePos指向TreeMap的值为0,意味着指向的是非叶子节点,则TreePos递减1,转步骤2;否则指向的是叶子节点,转步骤4。
步骤4.{定位父亲和兄弟节点}从NodeInfo[TreePos].father和NodeInfo[TreePos].brother定位L的父亲节点F和兄弟节点B的位置。若B节点在TreeMap中标记0,则表明兄弟节点是内部节点,那么放弃对当前叶子的合并,TreePos递减1,转步骤2;否则转步骤5。
步骤5.{检查是否满足合并条件}从NodeInfo[TreePos].ifpos和NodeInfo[NodeInfo[TreePos].brother].ifpos定位L和B的信息矢量,若L和B同处于同一个簇,转步骤6;否则TreePos递减1,转步骤2。
步骤6.{合并节点}注销叶子节点,置L和B在NodeInfo数组中的valid值为false(节点失效);置父亲节点为新叶子节点,置F对应TreeMap的位置为1;NodeInfo中新叶子节点的信息矢量值指向L在IFArray中的相应位置,并将L所在聚类的综合信息矢量置入;将新叶子节点作为下一轮计算的节点,TreePos←TreeMapF,转步骤2。
步骤7.{结束}合并过程结束。
在上述过程中,如果叶子节点L的兄弟节点B是内部节点,或者B是叶子节点但与不在同一个簇中,那么L和B不能被合并。此时在NodeMap中重新设置L节点的长度为1,可以减少存储空间。
重组过程在节点的合并过程中,只有当前节点和兄弟节点都为叶子节点且处于同一个簇中的情况可以进行合并操作。合并过程的结果是一些节点被注销,NodeInfo数组结构的valid用于标记节点是否被注销,重组过程根据此信息重新生成存储数组。
定义nipos和nodepos分别是NodeInfo数组和NodeMap数组的游标,TreeMap′、NodeMap′、EList′和IFArray′分别是重组后的几个存储数组。重组过程实现过程步骤如下步骤1.{初始化}初始化游标,nipos←0,nodepos←0。
步骤2.{跳过已注销节点}对于nipos标记的NodeInfo数组中的结构,若NodeInfo[nipos].valid=false,表明该节点已被注销,nipos递增1,nodepos递增直至NodeMap[nodepos]再次为0,转步骤2;否则,该节点未被注销,转步骤3。
步骤3.{判断输出节点的类型}若TreeMap[nipos]=0,则转步骤4输出内部节点;否则转步骤5输出叶子节点。
步骤4.{输出内部节点}令i=0,执行以下a)b)c)三个子步骤分别向TreeMap′、NodeMap′和EList′输出该节点的存储信息,然后转步骤6;(a)向TreeMap′输出比特0(b)向NodeMap′输出NodeMap[nodepos+i],i递增1;重复此过程直至NodeMap[nodepos+i]再次为0,记录输出长度为nodelen=i。
(c)向EList′输出从EList[nodepos]开始长度为nodelen的一段比特序列。步骤5.{输出叶子节点}令i=0,执行以下a)b)c)d)四个子步骤分别向TreeMap′、NodeMap′、EList′和IFArray′输出该节点的存储信息,然后转步骤6;(a)向TreeMap′输出比特1(b)向NodeMap′输出NodeMap[nodepos+i],i递增1;重复此过程直至NodeMap[nodepos+i]再次为0,记录输出长度为nodelen=i+1。
(c)向EList′输出从EList[nodepos]开始长度为nodelen的一段比特序列。
(d)向IFArray′输出IFArray[NodeInfo[nipos].ifpos]。
步骤6.{转向下个节点}nipos递增1,若nipos≥TreeMap.size,则已经遍历完所有节点,转步骤7;否则转向下一个节点,nodepos递增直至NodeMap[nodepos]再次为0,转步骤2;步骤7.{结束}重组过程结束。
本裁剪算法一方面合并CPat-Tree结构中相邻且信息矢量在同一个簇中的叶子节点,另一方面削减叶子节点携带的比特序列。实验证明,本算法可以降低CPat-Tree结构的存储空间,提高查询效率。附图3、4、5给出了裁剪算法的测试结果。附图3比较了160000和320000条URL构成的CPat-Tree索引在各种相似度下裁剪后的存储容量相对未裁剪前的存储容量。可以看出,在相似度从0.3-0.9变化过程中,不同的URL构成的CPat-Tree结构在裁剪后相对未裁剪结构的存储容量比率基本相同,达5%-15%;附图4和5分别展示了32000、96000、160000、320000条URL在相似度0.3-0.9下生成的裁剪过的CPat-Tree的剩余节点与原有节点数目的比率,以及查询效率提高的比率。可见,剩余节点数目随相似度平稳下降,查询效率提高30%-60%。
总之,本发明提出了一种基于CPat-Tree的网络内容分级索引结构模型和和在此基础上实现的裁剪算法,可以大幅降低索引结构存储容量和提高查询效率。
权利要求
1.一种基于CPat-Tree实现的可裁剪的网络内容分级索引结构,其特征在于(1)分级索引结构由TreeMap、NodeMap、EList和IFArray数组联合组成;其中,(2)TreeMap比特数组按前序顺序记录CPat-Tree的树状节点结构,以比特0标记内部节点,比特1标记外部节点;(3)NodeMap比特数组按前序顺序记录每个节点包含的比特数目,用1个比特0和若干比特1联合标记,其总数目等于节点包含比特数目;(4)EList比特数组按前序顺序存储每个节点包含的比特值;(5)IFArray数组按前序顺序记录叶子节点携带的信息矢量。
2.一种基于CPat-Tree的网络内容分级索引结构的裁剪算法,其特征在于基本步骤如下聚类过程将CPat-Tree中每个叶子节点根据信息矢量映射到矢量空间中一点,用空间模式识别的方法,把所有的点划分为若干不重合的簇,每个簇由一个固定半径的空间球体标识,簇中的点同处于一个球体中,落在同一个球体中的叶子节点被认为是相似的信息矢量,这个信息矢量作为该聚类的综合信息矢量,对应球体的中心点;合并过程根据合并规则,依次把每个簇中的叶子节点向上合并,删除该叶子节点,使其父亲节点成新叶子节点。新叶子节点的信息矢量用簇中心的综合信息矢量代替;重组过程去除临时布尔数组标记的合并掉的节点,重新生成裁剪过的存储数组;经历过重组过程后,裁剪过程结束,索引依然保持着CPat-Tree结构。
3.根据权利要求2所述的裁剪方法,其特征在于确定叶子节点是否相似的方法将叶子节点按携带的信息映射到矢量空间中的点,采用TOD方法来聚类。
4.根据权利要求2所述的裁剪方法,其特征在于合并过程对CPat-Tree数据结构的节点按逆前序顺序遍历一次即可完成。
5.根据权利要求2所述的裁剪方法,其特征在于合并过程利用一个与TreeMap数组等长的临时布尔数组纪录被注销的节点;True值表示TreeMap数组中相应节点未被注销,False值表示TreeMap数组中相应节点已注销。
6.根据权利要求2所述的裁剪方法,其特征在于合并过程的处理步骤如下定义合并过程使用的数据结构(1)当前处理节点L,L节点的兄弟节点B,L和B节点的父亲节点F;(2)TreeMap数组的游标TreePos;(3)NodeInfo,结构数组,与TreeMap数组等长,每个结构标记TreeMap中相应节点的信息;每个结构包括valid、father、brother和ifpos元素;其中valid元素表示当前节点的有效性,true值表示有效,false表示无效;father和brother元素标记当前节点的父亲节点和兄弟节点在TreeMap和NodeInfo数组中的下标;ifpos元素标记当前节点在IFArray的起始位置;步骤1.{初始化}初始化NodeInfo数组的各个元素,其中valid元素初始化为true值;令TreePos←TreeMap.size-1,以指向TreeMap的最后一个元素;步骤2.{判断当前节点的有效性}若TreePos≤0,则节点遍历过程结束,转步骤7;否则令当前节点为L,若NodeInfo[TreePos].valid=false,则L已被删除,TreePos递减1,转步骤2;步骤3.{定位叶子节点}令TreePos指向TreeMap的值为0,意味着指向的是非叶子节点,则TreePos递减1,转步骤2;否则指向的是叶子节点,转步骤4;步骤4.{定位父亲和兄弟节点}从NodeInfo[TreePos].father和NodeInfo[TreePos].brother定位L的父亲节点F和兄弟节点B的位置。若B节点在TreeMap中标记0,则表明兄弟节点是内部节点,那么放弃对当前叶子的合并,TreePos递减1,转步骤2;否则转步骤5;步骤5.{检查是否满足合并条件}从NodeInfo[TreePos].ifpos和NodeInfo[NodeInfo[TreePos].brother].ifpos定位L和B的信息矢量,若L和B同处于同一个簇,转步骤6;否则TreePos递减1,转步骤2;步骤6.{合并节点}注销叶子节点,置L和B在NodeInfo数组中的valid值为false(节点失效);置父亲节点为新叶子节点,置F对应TreeMap的位置为1;NodeInfo中新叶子节点的信息矢量值指向L在IFArray中的相应位置,并将L所在聚类的综合信息矢量置入;将新叶子节点作为下一轮计算的节点,TreePos←TreeMapF,转步骤2;步骤7.{结束}合并过程结束。
7.根据权利要求2所述的裁剪方法,其特征在于重组过程的处理步骤如下定义nipos和nodepos分别是NodeInfo数组和NodeMap数组的游标,TreeMap′、NodeMap′、EList′和IFArray′分别是重组后的几个存储数组;步骤1.{初始化}初始化游标,nipos←0,nodepos←0;步骤2.{跳过已注销节点}对于nipos标记的NodeInfo数组中的结构,若NodeInfo[nipos].valid=false,表明该节点已被注销,nipos递增1,nodepos递增直至NodeMap[nodepos]再次为0,转步骤2;否则,该节点未被注销,转步骤3;步骤3.{判断输出节点的类型}若TreeMap[nipos]=0,则转步骤4输出内部节点;否则转步骤5输出叶子节点;步骤4.{输出内部节点}令i=0,执行以下a)b)c)三个子步骤分别向TreeMap′、NodeMap′和EList′输出该节点的存储信息,然后转步骤6;a)向TreeMap′输出比特0;b)向NodeMap′输出NodeMap[nodepos+i],i递增1;重复此过程直至NodeMap[nodepos+i]再次为0,记录输出长度为nodelen=i;c)向EList′输出从EList[nodepos]开始长度为nodelen的一段比特序列。步骤5.{输出叶子节点}令i=0,执行以下a)b)c)d)四个子步骤分别向TreeMap′、NodeMap′、EList′和IFArray′输出该节点的存储信息,然后转步骤6;(a)向TreeMap′输出比特1;(b)向NodeMap′输出NodeMap[nodepos+i],i递增1;重复此过程直至NodeMap[nodepos+i]再次为0,记录输出长度为nodelen=i+1;(c)向EList′输出从EList[nodepos]开始长度为nodelen的一段比特序列;(d)向IFArray′输出IFArray[NodeInfo[nipos].ifpos];步骤6.{转向下个节点}nipos递增1,若nipos≥TreeMap.size,则已经遍历完所有节点,转步骤7;否则转向下一个节点,nodepos递增直至NodeMap[nodepos]再次为0,转步骤2;步骤7.{结束}重组过程结束。
全文摘要
本发明为一种针对URL及其所指向的网络实体的内容分级索引的结构模型和裁剪算法。其中,分级索引结构使用TreeMap、NodeMap、EList和IFArray几个数组记录实体的URL和分级信息。裁剪算法的基本步骤是将CPat-Tree中每个叶子节点根据信息矢量映射到矢量空间中一点,用空间模式识别的方法,把所有的点划分入若干不重合的簇,然后根据合并规则,依次把每个簇中的叶子节点向上合并,使其父亲节点成为新叶子节点;新叶子节点的信息矢量用簇中心的综合信息矢量代替。本发明极大地减少了CPat-Tree索引结构的存储容量,降低了查询过程中的磁盘访问次数和CPU计算代价,具有很高的查询效率。
文档编号G06F17/30GK1719442SQ20051002778
公开日2006年1月11日 申请日期2005年7月15日 优先权日2005年7月15日
发明者赵泽宇, 薛向阳, 石静, 许源 申请人:复旦大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1