一种应用于搜索引擎的索引结构研究
搜索引擎的应用及研究

搜索引擎的应用及研究internet是一个由不同类型和规模的独立自主运行和管理的计算机网络组成的全球范围的计算机网络,它的前身是1969年美国国防部高级研究计划署组建的实验性网络arpanet,随着计算机网络和通信技术的发展,各个国家和组织的网络的不断加入,internet已成为一个规模巨大、自治性强、发展变化快、用户访问频繁的全球最大的国际互联网络,截至1996年7月,internet已连接了134346个网络,入网的国家和地区超过150个,主机1228万台,用户人数以亿计。
internet又是一个无穷无尽的信息源泉,它已深入到人们生产、生活的各个领域,向人们提供着巨大的并且还在不断增长的信息资源和服务,越来越多的公司、企业通过网页宣传自己,越来越多的科研机关和学校通过网页交流科研成果,越来越多的组织和个人拥有了自己的主页,越来越多的报刊、杂志加入了internet的大家庭,足不出户而知天下事已不再是神话。
据不完全统计,1996年internet上的网页数已达到1900万,时至今日,这个数目决不会少于4亿。
为了让用户能够在如此庞大、杂乱、瞬息万变的信息海洋中,方便、快捷地找到自己感兴趣的信息,而不是茫然不知所措,仅靠网页上的超文本链是远远不够的,提供www信息导航服务的搜索引擎(search engine)是解决这个问题的一个途径。
传统的spider式搜索引擎通过被称为spider的程序自动地在网上循着超文本链递归地访问、收集www网页,分析页面的内容,生成索引和摘要,并向用户提供www查询页面,根据用户的查询请求在索引库中查找相关信息在网上的位置,最后将查询结果按照相关度排序后返回,帮助用户尽快地找到所需的信息,给用户带来了极大的便利。
这类搜索引擎的代表有infoseek和alta vista基于人工分类的目录式搜索引擎稍后出现,它在人工的参与下建立分类目录,对收集的网页按主题或者学科进行分类,编写摘要,用户可以沿着分类目录的层次结构,进入自己感兴趣的主题,进而找到所需的信息。
分布式索引的研究与应用

的。
4分布式索引架构 4l 整体 设计 基 于以上 两种技 术 , 设计并实现了图 2 的架构 , 整个架构是部署在分布式环境上的,图示的网页库, 索引库以及部署 Cet ne 方法或是 SacIdx ra Idx e er n e h 方法的节点之间的独立性都是逻辑上的区分。 4 2执行过程 4. 21索引建立过程:
一
9 0一
幽
曰
—
J
■t蠢鲁计
:
/
一 一
图 2分 布 式 L cn 引 架构 ue e索
臣
~
一 ~
一
和: 网页 1
服装: 网页 1 学生 : 网页 l 网页 2 倒排索引的建立 , 可以减少信息检索时的 计算 量, 提高检索效率。 然而, L cn 给搜索引擎开发带来了很多 尽管 uee 方便,但是仍然有其局限性一 只是提供了本地文 件的读写。 —个搜索引擎的开发所要面对的是庞大的 网页 信息资源, 通过L c e ue 为如此巨大的网页 n 文本 建立统一的索引, 其检索效率依然不容乐观, 而每次 新的网页资源加入该 索引, I 其 / 0操作也会给整个搜 索带来瓶颈制约。 ‘ 同时, 由于网页文本和索引文件是存储在一起 , 经常性的添加新的网页插入新的索引, 一旦本地存储 容量达到上限, 新的索引内容 将无法插入, 导致信息 丢失, 检索时将无法获取到该网页的信息, 而建立好 的索引也难以分割, 无法移植到 其他机器上。 因 , 此 在如今分布式存储的大环境下, c e L e un 应用需要有新 的改变 。而本 文的 突破 点则在 于 R MI
a收集网页资源信息, 建立网 页库, 根据数据节
4 .根据索引检索数据过程: 22 a 图示主控节点收到检索任务, 并行调用所有 计算节点的SacIdx erhne 方法, 该调用过程采用 R I M 技术; b er ldx S a hn e 方法本地读取索引文件 ,根据 c L cn 内部的查询 uee 机制进行关键字匹配查找, 最终 将结 果集反 馈给高效聚合计算模块; c 通过聚合计算模块汇总来 自 多个计算节点的 结果集, 该计算模块的建立借鉴了分布式计算模型 Ma/eue pRd c 的设计思想; d 汇总后的结果集到主控节点, 返回 完成整个 检索过程。 4 3架构分析 该架构 的总体思想在 于 ,按照指定 的 H s ah函 数 , L cn 索引的建立和存储尽可能均匀的分配 将 uee 到了多个不同的计算节点,达到了负载平衡的效果, 同时 并行处理索引的 建立和 检索, 提高了 I 圭行效率, l 能够均衡的 利用资源, C U的计算能力, 存的使 如 P 内 用率以 及硬盘的 存储能 力等, 降低了因分配不均匀而 造成的单点瓶颈效应的发生概率 ,同时在 Lcn 原 uee 有优势的 基础上, 解除了 其只能应பைடு நூலகம்用于集中 式环境的 限制, 扩展到了分布式环境, 并且该架构易于扩展, 一 旦原 有节点 的存 储容量或 是其他资源能力达到上限, 可将新 的计算 和存 储转移 至新 的节点, 建立新的索引 库 ,而不会影响原有计算节点和数据节点的正常运 行, 避免了数据丢失的问题。 除此之外, 高效聚合计算 模块的 建立, 能够有效提高整体搜索数据的 速度, 该 模块是以分布式计算模型 M p eue a R dc 的设计思想 / 为基础, 突出体现了“ 以空间换时间” 特性, 的 通过主 控节点“ 心跳响应” 的保证, 使得整体架构具有良好的 稳定性 。
倒排索引的原理

倒排索引的原理概述倒排索引(Inverted Index)是一种常用的信息检索技术,是一种将文档中的词条与其所在位置进行映射关联的数据结构。
倒排索引以词条为主键,将每个词条出现的位置进行记录,通过查询词条即可得到其所在的文档。
倒排索引广泛应用于搜索引擎、文本分类、信息提取等领域。
倒排索引的构建过程倒排索引的构建过程主要分为三个步骤:文档预处理、倒排表生成和索引优化。
文档预处理文档预处理是指将原始文档进行分词、去除停用词、词干提取等处理,以便于后续索引构建和查询时的高效匹配。
常用的分词算法有最大匹配法、最小匹配法、全切分法等。
在分词的基础上,去除停用词可以过滤掉一些常见的无意义词汇,如“的”、“了”等。
词干提取可以将不同形式的单词还原为其原始形态,如将“running”还原为“run”。
倒排表生成倒排表是倒排索引的核心数据结构,用于记录词条的出现位置。
倒排表由词条词典和倒排链表组成。
词条词典保存了所有的词条,并按照字典序排列。
倒排链表则记录了每个词条所在的文档及其位置信息。
在倒排表生成的过程中,首先需要对文档进行编号。
然后遍历每个文档,对文档进行分词和词条提取。
将提取出的词条与词典进行比较,如果词条已存在于词典中,则添加该文档ID及其位置信息到倒排链表中;如果词条不存在于词典中,则创建一个新的倒排链表并添加到词典中。
索引优化索引优化是为了提高倒排索引的查询效率和减少索引空间的占用。
常用的优化技术包括压缩倒排表、合并相邻倒排链表、前缀压缩等。
压缩倒排表可以减少索引文件的大小,提高读写效率。
常用的压缩方法有变长编码、前缀编码、霍夫曼编码等。
合并相邻倒排链表可以减少磁盘IO的次数,提高查询效率。
前缀压缩是通过将倒排链表中的共同前缀进行合并,减少冗余信息的存储。
倒排索引的应用倒排索引广泛应用于信息检索领域,尤其是搜索引擎。
通过倒排索引,搜索引擎可以快速定位包含查询词的相关文档,并按照相关性进行排序。
此外,倒排索引还可以用于文本分类、信息提取等任务。
基于Lucene和Heritrix的全文检索引擎的研究与应用

QI i — u NG X u— a h
( h o o Eet nc S o l f ete iesy W u a 3 0 3 C ia c r l r aE g e n , hnT xi v rt, hn4 07 , hn) c i n i lUn i
Ke o d : ue efltx a hn g e He tx yw r s L cn ;u ter ig n n ; rr le s c ei ii
1 述 概
随着 It t ne 网上 的信息呈几何级数 式的增长 , me 搜索引擎 已经 成为用户浏览 网络信 息的首选 。传统 的通用搜索引擎 (og 、 G ol e Y ho以及国内的 B iu等)作为一个辅助用户查找信息 的工具已经成为大多数互联网用户访问 网络的入 口。但是 , ao a d , 这些通用性搜 索引擎存在着一定的不足 , 例如 : 用搜索 引擎 的信息量较大 、 通 搜索深度不够 、 询不太准确等 问题 。在这种情况下 , 了解决这些 查 为 问题 , 垂直搜索引擎 应运 而生 。垂直搜索引擎是针对某一领域或行业 的专业搜索引擎 , 是搜索 引擎 的延伸 , 以为搜索用户提供符 可 合专业 用户操作 行为的信息服务方式 。它 的特点是 “ 、 、 , 专 精 深” 并且具有较强 的行业色彩 , 和通用搜索引擎的海量信息无序化相 比, 垂直搜索 引擎更加具体 和深入 。该 文主要 阐述开源 的L cn 技术 和 H rr u ee eii tx技术的基本原理和使用方法 , 出了整合 L cn 提 u ee 与 Heii使其与 JE rr tx 2 E平 台完全融合的方案 , 并实现了一个手机产品垂直搜索引擎系统。
基于Lucene专业搜索引擎的研究应用

领域或 主题的信息 , 由搜索器 、 索引器 、 检索 器和用 户 接 口等 四个部分组成 ,工作原理与通用搜索 引擎 的工
作 原 理基 本 相 同 .所 不 同 的 是 专 业 搜 索 引擎 对 抓 取 的
收 稿 E 期 :0 0 8 2 l 2 1 —0 —1 修 稿 日期 :0 0 0 —1 21—9 2
作 者 简介 : 雪 - ( 7 - , , 苏如 皋 人 , 师 , 士 , 究 方 向 为 信 息 处理 与检 索 朱  ̄ 1 6) 江 9 女 讲 硕 研
0 现 计算 21. 代 机 00 9 0
\
\ \
实 践 与 经验
基于 L c n u e e专业搜 索引擎 的研 究应 用
朱 雪莲
( 疆 艺 术 学 院 基 础部 ( 政 部 ) 新 思 ,乌 鲁 木 齐 8 04 ) 30 9
摘
要 :搜 索 引 擎现 已 经成 为 搜 索互 联 网信 息 的重 要 工 具 。通 用 的搜 索 引 擎 虽然 功 能 强 大, 对 专 但
应 用
L cn 是 用 -v 的 全 文 检 索 引 擎 工 具 包 , 不 ue e l a写 a 并 是 一 个 完 整 的全 文 检 索 引 擎 ,而 是 一 个 全 文 检 索 引 擎
擎所建立 的数据 库是关于某一领域 或某一专 业 。图 1 显示了专业搜索 引擎 的体系结构 。
擎在 搜 索结 果 等 方 面 进行 比 较
关 键 词 : e :专 业搜 索 引 擎 ; ue e w b L cn
0 引
言
堂
index数据结构

index数据结构一、概述Index数据结构是一种用于快速查找和访问数据的数据结构。
它通常用于数据库、搜索引擎和文件系统等领域,能够在大量数据中快速定位所需的信息。
本文将介绍几种常见的Index数据结构,并分析它们的特点和应用场景。
二、哈希表(Hash Table)哈希表是一种以键值对形式存储数据的数据结构,通过将键映射到一个固定大小的数组中来实现快速访问。
哈希表的特点是查找、插入和删除操作的平均时间复杂度都是O(1),但是在最坏情况下,时间复杂度可能达到O(n)。
哈希表适用于需要快速查找和更新数据的场景,如字典、缓存等。
三、B树(B-Tree)B树是一种自平衡的搜索树,具有多叉树的特点。
它的每个节点可以包含多个键和对应的值,并且按照键的大小有序排列。
B树的特点是查找、插入和删除操作的时间复杂度都是O(log n),其中n为节点中存储的键值对数量。
B树适用于需要在大规模数据集中进行高效查找的场景,如数据库索引。
四、B+树(B+Tree)B+树是在B树的基础上进行优化的一种数据结构。
它与B树的区别在于,B+树的内部节点不保存数据,只保存键的范围信息,而数据只存储在叶子节点中。
叶子节点之间通过指针连接,形成一个有序链表。
B+树的特点是查找操作只需遍历叶子节点,因此查找效率更高。
B+树适用于需要范围查询和顺序访问的场景,如数据库索引。
五、倒排索引(Inverted Index)倒排索引是一种常用于搜索引擎的数据结构,用于快速定位包含某个关键词的文档。
它将文档中的关键词映射到包含该关键词的文档列表,并记录关键词在文档中的位置信息。
倒排索引的特点是在大规模文档集合中快速定位相关文档,适用于全文搜索等场景。
六、红黑树(Red-Black Tree)红黑树是一种自平衡的二叉搜索树,它通过对节点进行着色和旋转操作来保持平衡。
红黑树的特点是查找、插入和删除操作的时间复杂度都是O(log n),其中n为节点数量。
红黑树适用于需要高效插入和删除操作的场景,如C++的STL中的map和set容器。
es知识点总结

es知识点总结ES(Elasticsearch)是一个开源搜索引擎,用于全文搜索、结构化搜索和分析。
它被广泛应用于各种场景,如电子商务网站、日志分析、实时监控等。
ES具有强大的搜索能力、高可扩展性和易用性,因此备受开发者和企业的青睐。
本文将对ES的知识点进行总结,包括ES的介绍、基本概念、核心组件、数据操作、性能调优等内容,旨在帮助读者全面了解ES,并能够灵活运用ES解决实际问题。
一、ES介绍1. ES的定义ES是一个分布式、RESTful风格的搜索引擎,基于Apache Lucene构建。
它支持全文搜索、结构化搜索和分析,可以快速、准确地检索大规模数据,并提供丰富的查询和聚合功能。
2. ES的优势ES具有以下几个优势:(1) 分布式架构:ES采用分片和副本的方式存储数据,并支持自动故障转移和负载均衡,保证了系统的高可用性和性能扩展性。
(2) 强大的搜索能力:ES支持多种搜索方式,包括全文搜索、词项搜索、短语搜索等,能够满足不同场景下的搜索需求。
(3) 灵活的数据模型:ES支持动态映射和自定义映射,可以灵活处理结构化和非结构化数据,适用于各种数据类型和格式。
(4) 丰富的聚合功能:ES提供丰富的聚合功能,包括分组、统计、排序、汇总等多种聚合方式,能够满足复杂的数据分析需求。
3. ES的应用场景ES广泛应用于电子商务网站、新闻门户、日志分析、实时监控等领域,主要用于高效搜索和分析大规模数据。
二、ES基本概念1. 索引(index)索引是ES中最高层次的数据存储单位,类似于关系数据库中的数据库。
每个索引可以包含多个文档,每个文档可以包含多个字段。
2. 文档(document)文档是ES中的最小数据单位,它类似于关系数据库中的行。
每个文档由一个唯一的ID和一组字段组成。
3. 类型(type)类型是索引中的逻辑分组,用于对文档进行分类。
同一个索引中可以包含多个类型,每个类型可以有自己的映射配置。
4. 分片(shard)和副本(replica)分片和副本是ES用于存储和提高性能的重要概念。
基于Lucene的搜索引擎技术的研究与改进

t d y2 0 / 1 1 / to u t n t- u c -1hml 0 6 o a / 0 6 0 / 0 i r d ci - o n t h . t , 0 n o 2
[】 刚 , 伟 , 哲 . J X+ u ee构 建 搜 索 引 擎 【 . 民 邮 5李 宋 邱 A A L en M】 人
w t h n o ma in t e e d i t e if r t h y n e . h o
K y e wors L c n ;I d x r a kn e h oo y d : u e e n e e ;R n igT c n lg
现 代计 算 机
2 1 .8 01 0
管理索引等 u ee L cn 采用 了两种索 引模式 : 独立索 引和 复合索引模式 独立索引模式是指每个 D cmet 立 ou n 独 索引成一个文件 . 种方式检索速度 比较快 . 这 但是不适
合 大 量 文 件 的 处 理 复 合 索 引 模 式 是 把 多 个 D cm n ou e t 索 引 成 一 个 文 件 这 种 方 式 检 索 速 度 没 有 独 立 模 式 的
用 . 0 96 2 0 .
[] J 平 . 索 引 擎 P gR n 9g l x 搜 ae a k算 法 研 究 . 算 机 应 用 于 软 计
件 .0 89 20 .
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一种应用于搜索引擎的索引结构研究①刘 畅 张 辉(北京航空航天大学计算机学院 北京 100083)摘 要索引结构是搜索引擎的核心,直接影响着搜索引擎的检索性能。
本文提出了一种新的索引结构,该结构充分利用字符串前缀个数及排列顺序的潜在规律,在查找过程中有效地重用了先前的匹配信息,提高了检索的效率。
关键词:索引结构 搜索引擎 倒排文件中图分类号:TP391.1Study of Index Structure which Supports the High E ff iciency of SearchingLiu Chang Zhang H ui(Dept.of Computer Science and Technology ,BUAA ,Beijing 100083)Abstract :Index structure is the core of a search engine ,it has an influence on the performance of whole search engine direct 2ly.In this paper ,a new index structure is presented ,which takes full advantage of the latent rules about the suffix number and the order of string ,makes full use of the match information got in searching process ,consequently improves the searching efficiency.K ey w ords :structured text,index structure ,inverted files Class number :TP391.11 引言一个良好的索引结构可以在被检索数据规模庞大的情况下保证检索操作的速度,是实现高效率检索的一个决定性因素[1]。
常用的文本索引形式有三类,分别是倒排文件,后缀数组和签名文件。
一个搜索引擎可以选用上述任何一种形式的索引结构,但其中应用范围最广的是倒排文件[2]。
本文在倒排文件的基础上,充分利用了字符前缀及字符串排列顺序在索引结构及查找过程中的特点,提出了一种支持高效检索的索引结构。
2 搜索引擎的总体框架 本文所描述的搜索引擎的系统框架如图1所图1 搜索引擎的基本组成示,主要包含以下几个主要功能模块:(1)数据预处理,对数据进行预处理,形成一定格式的结构化文本文档。
(2)词语切分,对被检索文本进行切词处理,提取有独立意义的词语。
(3)索引建立,将切分后的词语及其相关信息提交给索引器,使其以一定格式保存在索引数据库中。
(4)查询预处理,调用词法分析器将查询表达式中的词语或模式分离出来,提交检索。
(5)检索,从索引数据库中获取匹配信息。
(6)组合排序,对所有匹配信息进行组合和排序处理,实现词组查询、邻近查询或布尔查询等具体处理步骤,得到最终检索结果。
由上可知,索引数据库是整个搜索引擎框架的核心部分,索引器和检索器都是在此基础上工作的,它直接关系到整个搜索引擎的性能。
下一节我们将详细介绍索引结构的设计。
3 索引结构的设计对本文所述搜索引擎,为每个参加索引的文档分派一个唯一的文档编号,将文本中所出现有独立意义的字符串称为项。
我们将数据处理成为结构①收到本文时间:2005年1月17日化的文本文档[4],即按其格式自有的特征划分为若干非重叠的文本区域。
如,对于邮件类型的数据,我们可将其划分为“发送者”,“接受者”,“日期”,“主题”,“信体”等几个信息域。
在该检索模型中,存储在不同域中的同一个字符串代表的意义是不同的,因此每个项包括三个要点:一,包含项的文档所对应的文档号;二,项所在的域;三,词在某个文档某一域中出现的频率和位置信息[3]。
在该搜索引擎对应的检索模型中,我们将索引结构分作两个部分,分别存放为项索引文件和项信息文件。
项信息文件用于记录每个项所对应的要点内容,以组织反馈结果;项索引文件用于快速定位项相关信息在索引中的存放位置。
它们二者有着密切的联系。
3.1项信息文件项信息文件存储了每个项对应的要点信息,在检索过程中,须对这些信息进行处理和加工,才能得到最终的检索结果。
我们将与域有关的信息存储在一个单独的域信息文件中,作为项信息的辅助描述。
域信息文件(FieldInfoFile)的结构描述如下:FieldInfo File→FieldNum,<FieldName, FieldWeight>FieldNum其中,FieldNum指域的个数,FieldName指域的名称,FieldWeight存放的是域权值,可作为衡量各个域重要性的客观依据之一,对结果排序起到辅助作用。
项信息文件(TermInfoFile)的具体结构描述如下:TermInfo File→TermNum,<TermInfo>TermNum TermInfo→FieldNum,<FieldSn,DocInfo >FieldNumDocInfo→DocNum,<DocSn,Location>DocNum Location→Freq,<Offset>Freq其中,TermNum指所有项的个数,FieldNum 指包含该项的域的个数,DocNum指某个域包含该项的文档个数,DocSn指具体的文档号,Freq指该项在第DocSn个文档,第FieldSn个域中出现的频率,Offset指该项在域中出现的相对位置,第一个Offset表示该项相对于域内容的起始位置的偏移量,其后的Offset均表示相对于前一个出现位置的偏移量。
3.2项索引文件项索引文件是整个索引文件的核心部分,检索过程实际上也就是对项的查找过程。
要实现高效的搜索,主要与这个部分的存储结构有关。
在文本索引的范畴中,项是由字符串组成的,而字符串是由遵循ASCII、Unicode等各类编码规则的字符组成的,更进一步,项可被看作是由0和1组成的序列。
我们可以指定一个长度n,将长度为n的01序列作为不可分割的原子单元。
如,指定单元长度为4,则存在”0000”至”1111”共24个不同的原子单元。
在该索引结构中,我们所有的字符串都看作是由2n种原子单元(n为原子单元位长度)构成的序列。
项索引文件(TermIndexFile)的具体结构描述如下:TermIndexFile→<TermIndexNode>TermCount TermIndexNode→<PrefixLength,Suffix,Nex2 t Hop,InfoAddr>Suffix→StringPrefixLength→intNext Hop,InfoAddr→intTermCount指项索引文件中包含的项的个数。
项的内容由PrefixLength和Suffix两部分组成,其中PrefixLength表示与前一项具有相同的前缀的个数,Suffix用来表示剩余部分的字符串内容。
举例来说,若我们将字母看作是原子单元,如果“god”的前一项为“goal”,则“god”的Pre2 fixLength值为2,Suffix值为“d”。
Next Hop用来指示与该项相同前缀数目为PrefixLength的下一项的位置。
InfoAddr指示与该项相关的内容在项信息文件中的起始地址。
当某一项在项索引文件中查找成功后,通过该项InfoAddr即可获取项信息文件中与之对应的内容。
本文就字符串集合{00,0000,000000, 0001,000100,00010000,000101,00010100, 0010,0100,1000,100000,100001,10000100, 100010,100011,1001,11}作为项索引文件的示例内容。
将其原子单元长度取为2,直观起见,我们以”a”替换”00”,以”b”替换”01”,以”c”替换”10”,以”d”替换”11”,字符串集合内容可表示为{ a,aa,aaa,ab,aba,abaa,abb,abba,ac,ba,ca, caa,cab,caba,cac,cad,cb,d}。
图2是上述字符串集合对应的项索引文件示例。
项按字典序排列,圆中的数字是对应项的Pre2 fixLength值,上方除“-”字符以外的其它字符是该项对应Suffix域的内容,下方箭头所指地址即该项Next Hop域所存放的内容。
对上述规则定义的项索引文件,可按下列原则,映射成一棵二叉树。
从第0项开始,令n 等于满足条件(Pre 2fixLength =0)的项的个数。
对第i (1<=i <n )个PrefixLength 值为0的项,其右指针指向第i +1个PrefixLength 值为0的项;其左子树内容为项索引文件中位于该项与其右指针所指项之间的所有项。
对于每个结点,令i 等于该结点PrefixLength 值,其左子树的生成规则为:如果左子树内容为空,则无左子树。
如果不为空,那么在项索引文件中,若该结点后一个结点PrefixLength 值为(i +1),则将其作为左子树头结点,否则,左子树头结点为虚结点,可将此虚结点看作是PrefixLength 值为(i +1)的结点。
在该结点左子树内容范围内,对每个PrefixLength 值为(i +1)的项,若之后存在Pre 2fixLength 为(i +1)的项,则将其作为右指针内容,否则右指针为空;其左子树的内容为项索引文件中位于该项与其右指针所指项之间的所有项,生成规则与上述左子树生成规则同。
图2 项索引文件示例图2的项序列可以映射成一棵如图3所示的图3 总体结构示例二叉树,它更加直观地表示了项与项之间更深层次的关系。
为了更加清晰的描述项之间的关系,其中可能存在没有实际内容的虚结点,图3中以虚线框表示的结点即为虚结点。
每个结点引出的有向线有如下含义:实线表示指针,它指向的项的地址是该项Next Hop 域的内容,对于没有引出实线箭头的项,其Next Hop 域为空;虚线箭头指向的项位于该项之后,与该项在项索引文件中是相邻关系。
由图3我们可以得出如下规律:(1)对于每个结点,前缀个数等于从根节点与该结点之间所有左指针条数;(2)由上,位于同一条右指针延长线上的结点前缀个数相同;(3)对于每个项,若其PrefixLength 值较前一项PrefixLength 值多出2或2以上,则相应二叉树结构会出现虚结点;(4)图中结点所对应的项在项索引文件中的顺序是对该二叉树进行前序遍历所得结果;(5)对每个结点,我们将它的左子树看作是它的孩子,右子树看作是它的兄弟,我们将它和它的孩子们,即它的左子树称作是该结点的家族。